二进制与十进制整数,浮点数相互转换
平安行-
二进制与十进制整数
,
浮点数相互转换
2011-07-01 8:53
整数转化为二进制
1.
正整数用源码表示
2.
负整数用绝对值的补码表示(将绝对值取反
+1
)
如
-50
用
50
的补码表示
50
的源码为
00110010
反码则为
1111001101
补码为反码
+1 1111001110
二进制转化为整数
1.
如果符号位为
0
,表示为正,直接将二进制数据翻译
即可
2.
如果符号位为
1
,表示为负,将数据-
1
取反
.
或者(取反
+1
)
如:
1111001110
-1
:
1111001101
取反:
00110010
源码:
1111001110
取反:
00110001
+1
:
00110010
浮点型转化为二进制
将整数转化为二
进制,去掉首位
1
,小数转化为二进制,整数去
1
后二进制位数
+127
转化
为二进制,然后根据浮点型正负在最前面加上符号位。
如:
-40.125
整数为
101000
,去掉首位
1
则为
01000
,小数为
001<
/p>
,则整数位数为
5
,
+127
=
132
(
10000100
),加上符号位
1
,则二进制数据为
100 0010 0
整数:
1010 00
去掉首位
1
:
010 00
加上前八位表示小数点位置:
100
0010 0010 0000 1
加上小数位:
100 0010 0010 0000 1000 0000 0000 0000
加上符号位:
1100 0010 0010
0000 1000 0000 0000 0000
二进制转化为浮点型
去掉首位符号位
,取前八位
-127
然后将剩余的二进制数据小数点后移所得值
,
首位
+1
,小数点之前位整数,之后
为小数,由符号位判断正负。
如:正数:
0100 0011 0100 0100
0100 0110 1111 1100
去掉符号位:
100 0011 0100 0100 0100 0110 1111 1100
前八位
100 0011
0
=
134 -124
=
7
;
整数:
100 0100
首位
+1 1100
0100
=
196
小数:
0100 0110 1111
1100
小数依次乘
1/2
,
p>
1/4
,
1/8
,
1/16....
=
1/2*0+1/
4*1+1/8*0+1/16*0+1/32*0+1/64*1......
最后得
出保留四位小数的话
是
196.2769
负数: