1 Java byte类型
byte占用1个字节,8位,第一位是符号位:0表示正数。1表示负数。表示范围 -128~127。
2 为什么要用补码存储
2.1 如果负数用原码表示
编码举例
127:0111 1111
2:0000 0010
1:0000 0001
0:0000 0000
-0:1000 0000
-1:1000 0001
-2 :1000 0010
-127:1111 1111
存在问题
1、有两个零表示,浪费1个存储,且有歧义。
2、负数的表示可读性较好,但是对计算机不友好,无法直接使用位运算的加法。加法处理需要区分正数和负数两个分支。
2.2 如果负数用反码表示
反码的定义:按位取反
编码举例
127:0111 1111
2:0000 0010
1:0000 0001
0:0000 0000
-0:1111 1111
-1:1111 1110
-2 :1111 1101
-127:1111 1111
存在问题
1、有两个零表示
2.3 如果负数用补码表示
补码的定义:按位取反然后加1
编码举例
127:0111 1111
2:0000 0010
1:0000 0001
0:0000 0000
-0:1111 1111
-1:1111 1111
-2 :1111 1110
-127:1000 0001
-128:1000 0000
附录:位的运算符
& 与
| 或
^ 异或
~ 取反
<< 左移
>> 右移
网友评论