delphi中十进制转换为二进制(含小数)代码

来源:百度知道 编辑:UC知道 时间:2024/06/17 14:43:26
不怕笑话
我是刚刚接触delphi的,所以你的代码我有点看不懂。比如:((Value shl (i - 1)) shr 63)、CopyMemory(@i,@d,8);
解释下!谢了
还有,我的意思是。比如,直接输入1.34然后输出它对应的二进制数

我希望越简单越好 采纳后有追加分

浮点数转换需要2次,第一次转换整数位,第二次转换小数位,整数位转换函数如下:
function IntToBin(Value: int64): string;
var
i: int64;
begin
SetLength(result, 64);
for i := 1 to 64 do
begin
if ((Value shl (i - 1)) shr 63) = 0 then
result[i] := '0' {do not localize}
else
result[i] := '1'; {do not localize}
end;
end;

var
d:double;
i:int64;
begin
d:=3.056;
CopyMemory(@i,@d,8);
Result:=IntToBin(i);
end;

小数位的算法与整数位差不多,只不过把除法改为乘法,鉴于你给的分数,代码就不写了,计算方法如下:

举例:20.59375
1.先转换整数:
20 /2 余 0 第0位
商 10 /2 余 0 第1位
商 5 /2 余 1 第2位
商 2 /2 余 0 第3位
商 1 /2 余 1 第4位
商 0 结束
结果=10100
2.转换小数
0.59375
* 2 有进位1
-------------------
1.18750 >1 第0位为1
-1
-------------------
0.18750
* 2
-------------------
0.37500 <1 第1位为0
* 2
-------------------
0.75000