本文主要是介绍正值、补码、反码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
学习Java基础知识,感觉Java里的整数应该是用补码保存的,这里回顾整理一下各种编码方式
真值:
也就是数字现实中的含义 符号+绝对值,例如+122,-2
原码:
第一位代表真值的正负,【+1】原码=0000 0001 【-1】原码=1000 0001
除去符号位,数字位的取值范围是0000~1111,以8位有符号数为例,取值范围是-111 1111到+111 1111,即[-127,127],但其中0000 0000和1000 0000都表示0,重复了
反码:
正数反码:和原码相同
负数反码:除符号位以外,其他位取反,原码【10010】=反码【11101】=真值【-2】
取值范围:[-127,+127]
补码:
正数补码:和原码相同
负数补码:在其反码的末位加1,即符号位不变,其余位取反+1
取值范围:[-128,127] (Java中 1个字节长度的Byte的取值范围)
以4位补码为例,0只有+0,没有-0,
1000000是最小的负数
2进制 | 计算 | 真值 |
1000 | -(111+1)= -1000 | -8 |
1001 | -(110+1)= -111 | -7 |
1010 | -(101+1)= -110 | -6 |
1011 | - 101 | -5 |
1100 | -100 | -4 |
1101 | - 011 | -3 |
1110 | - 010 | -2 |
1111 | - 001 | -1 |
0000~ 0111 | +0~+7 | 0~7 |
这篇关于正值、补码、反码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!