📄 c#单精度浮点数从十进制转化为机器表示.txt
字号:
private void RealDtoB(double number)
{
double zhenshu, xiaoshu, jieguo;
byte[] RealByte = new byte[4];
string strZ, strX = "", strJ;
int numb, i = 1, len, le, len2, len3, Bias = 127;
string s, str1, str2, Jiema, weishu, jia;
string Jieguo1, Jieguo2, Jieguo3, Jieguo4;
if (Math.Abs(number) == 0)
{
RealByte[0] = 0;
RealByte[1] = 0;
RealByte[2] = 0;
RealByte[3] = 0;
}
else
{
if (number > 0)
{
s = "0";
}
else
{
s = "1";
}
zhenshu = Math.Floor(Math.Abs(number));
numb = Convert.ToInt32(zhenshu);
strZ = Convert.ToString(numb, 2);
xiaoshu = Math.Abs(number) - zhenshu;
for (i = 0; ((xiaoshu != 0) && (i < 23)); i++)
{
jieguo = xiaoshu * 2;
strJ = jieguo.ToString();
strX += strJ.Substring(0, 1);
zhenshu = Math.Floor(jieguo);
xiaoshu = jieguo - zhenshu;
}
strJ = strZ + "." + strX;
str1 = strJ.Substring(0, 1);
if (str1.Equals("1"))
{
len = strZ.Length;
le = len + Bias - 1;
Jiema = Convert.ToString(le, 2);
len2 = Jiema.Length;
if (len2 < 8)
{
for (i = 0, jia = ""; i < 8 - len2; i++)
{
jia += "0";
}
Jiema = jia + Jiema;
}
str2 = strZ.Substring(1, len - 1) + strX;
len = str2.Length;
if (len > 23)
{
weishu = str2.Substring(0, 23);
}
else
{
weishu = str2;
}
}
else
{
len = strX.IndexOf("1");
le = Bias - (len + 1);
Jiema = Convert.ToString(le, 2);
len2 = Jiema.Length;
if (len2 < 8)
{
for (i = 0, jia = ""; i < 8 - len2; i++)
{
jia += "0";
}
Jiema = jia + Jiema;
}
len3 = strX.Length;
if (len3 == (len + 1))
{
weishu = "0";
}
else
{
weishu = strX.Substring(len + 1);
}
}
strJ = s + Jiema + weishu;
len = strJ.Length;
if (len < 32)
{
for (i = 0; i < 32 - len; i++)
{
strJ += "0";
}
}
Jieguo1 = strJ.Substring(0, 8);
Jieguo2 = strJ.Substring(8, 8);
Jieguo3 = strJ.Substring(16, 8);
Jieguo4 = strJ.Substring(24, 8);
RealByte[0] = Convert.ToByte(Jieguo1, 2);
RealByte[1] = Convert.ToByte(Jieguo2, 2);
RealByte[2] = Convert.ToByte(Jieguo3, 2);
RealByte[3] = Convert.ToByte(Jieguo4, 2);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -