1. 概念
- 原码
符号位加上数字的二进制表示,第1位为符号位,为0时表示正数,为1时表示负数 - 反码
符号位不变,其它位取反 - 补码
分为正数和负数两种情况
- 正数时,就是原码
- 负数时,再反码加1
2. 举例
-
正数
原始数据byte a = 5;
原码: 00000101 //首位为符号位,0表示正数,5用二进制表示为101
反码: 01111010 //首位不变,其余各位取反,0变为1,1变为0
补码: 00000101 //因为是正数,直接用原码 -
负数
原始数据 byte a = -5;
原码: 10000101 //首位为符号位,1表示负数,5用二进制表示为101
反码: 11111010 //首位不变,其余各位取反,0变为1,1变为0
补码: 11111011 //因为是负数,直接用反码加1
3. 机器中表示
- 以补码的方式
- 代码展现二位进制输出
byte a = -5;
//byte为1个字节,共8位
for(int i=0;i<8;i++) {
//从前往后,挨个提取出二进制位
int b = (a & 0x80>>>i) >>>(7-i);
System.out.print(b);
}
//11111011
网友评论