注:符号位1,0不做计算,后面的0或1是用来补齐字节码位数长度
- 十进制转二进制 -10.8125:
10 正数 十进制转二进制 除二留商取余,倒序排列 (10)10 = (1010)2
0.8125 小数 十进制转二进制 乘二取整,顺序排列 (0.8125)10=(0.1101)2
把整数部分和小数部分合并所得:(10.8125)10=(1010.1101)2
得到10.8125的二进制:1010.1101,转化为反码
00000000,00000000,00000000,0000,1010.1101->11111111,11111111,11111111,111,10101.0010
反码再加1称其为补码,负数的原码就是其补码
11111111,11111111,11111111,111,10101.0010->11111111,11111111,11111111,111,10110.0010
-10.8125的二进制就是10110.0010
- 二进制转十进制:
负数(10110.0010)2转十进制:
10110.0010 补码转反码 补码减1即反码:10101.0010
负数反码转正数对应的原码:
11111111,11111111,11111111,111,10101.0010->00000000,00000000,00000000,000,01010.1101
正数先取其整数部分原码转成十进制:
1010->0*20+1*21+0*22+1*23=2+8=10
再取其小数部分原码转成十进制:
.1101->
小数点后
第一位 1*(1/2) 即乘以2的负一次方
第二位 1*(1/4) 即乘以2的负二次方
第三位 0*(1/8) 即乘以2的负三次方
第四位 1*(1/16)即乘以2的负四次方
(1/2)+(1/4)+(1/16)=0.5+0.25+0.0625=0.8125
整数部分与小数部分十进制相加,再取其负数:
(1010.1101)2=(1*23+0*22+1*21+0*20+1*2-1+1*2-2+0*2-3+1*2-4)10
=(10+0.8125)10
=10.8125 -(10.8125) 即 -10.8125