6. 位址線與記憶體空間之對等轉換系統說明
namespace Q6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void label13_Click(object sender, EventArgs e)
{
}
Random rd = new Random();
private void button3_Click(object sender, EventArgs e)
{
textBox1.Text = rd.Next(16, 53).ToString();
textBox3.Text = rd.Next(1, 9) + "B";
textBox5.Text = "";
}
private void button4_Click(object sender, EventArgs e)
{
long a = int.Parse(textBox1.Text);
var b = int.Parse(textBox3.Text[0..^1]);
double n = (double)Math.Pow(2, a) * b;
textBox5.Text = conv((long)n);
}
string conv(long n)
{
if (n >= 1024L * 1024L * 1024L * 1024L)
{
return (n / (1024L * 1024L * 1024L * 1024L)) + "TB";
}
if (n >= 1024L * 1024L * 1024L)
{
return (n / (1024L * 1024L * 1024L)) + "GB";
}
if (n >= 1024L * 1024L)
{
return (n / (1024L * 1024L)) + "MB";
}
return (n / 1024L) + "KB";
}
private void textBox5_TextChanged(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
long val = rd.NextInt64(512, 32768L * 1024 * 1024 * 1024);
textBox6.Text = conv(val);
textBox4.Text = rd.Next(1, 9) + "B";
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
int b = int.Parse(textBox4.Text[..^1]);
var t = textBox6.Text;
long n = 0;
if (t.EndsWith("TB"))
{
n = long.Parse(t[..^2]) * (long)Math.Pow(1024, 4);
}
if (t.EndsWith("GB"))
{
n = long.Parse(t[..^2]) * (long)Math.Pow(1024, 3);
}
if (t.EndsWith("MB"))
{
n = long.Parse(t[..^2]) * (long)Math.Pow(1024, 2);
}
if (t.EndsWith("KB"))
{
n = long.Parse(t[..^2]) * (long)Math.Pow(1024, 1);
}
textBox2.Text =Math.Ceiling(Math.Log2(n / b)).ToString();
}
}
}
Last updated