二进制与十进制整数,浮点数相互转换

别妄想泡我
921次浏览
2021年02月08日 10:00
最佳经验
本文由作者推荐

平安行-

2021年2月8日发(作者:网址安全性检测)


二进制与十进制整数


,


浮点数相互转换



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



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


负数:


平安行-


平安行-


平安行-


平安行-


平安行-


平安行-


平安行-


平安行-