5. 實數與二進位數之編碼解碼
namespace Q5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{ // 1000101110110101000111
// 0.637197
double min = double.Parse(x1.Text);
double max = double.Parse(x2.Text);
var prec = int.Parse(x3.Text);
int parts = (int)Math.Ceiling((max - min) * Math.Pow(10, prec));
int bits = (int)(Math.Ceiling(Math.Log2(parts)));
var t = textBox2.Text;
//MessageBox.Show(parts + "/" + bits);
if (t.Any(r => r != '0' && r != '1'))
{
double xp = (double.Parse(t) - min) * (Math.Pow(2, bits) - 1) / (max - min);
string k = Convert.ToString((int)Math.Ceiling(xp), 2);
label5.Text = "Ans= " + k.PadLeft(bits,'0');
}
else
{
double sum = 0;
for (int i = 0; i < bits; i++)
{
sum += Math.Pow(2, i) * (textBox2.Text[textBox2.Text.Length - i - 1] - '0');
}
label5.Text = "Ans= " + (min + sum * (max - min) / (Math.Pow(2, bits) - 1)).ToString("f" + prec);
}
}
}
}
Last updated