正数的原码反码补码都是它本身
一、原码
1、定义:
十进制数据的二进制表现形式,最左边是符号位,0为正,1为负
利用原码对正数进行运算是不会有问题的,负数计算会让结果相反方向发展
一个0或1为一个比特位(bit),8个bit为一个字节,字节是计算机中最小的存储单位
最左边的bit不参与运算,只作为符号而存在
2、字节范围
范围:-128 —— +127(因为是用补码运算的,会多出一位特殊的-128)
二、反码
1、定义:
正数的反码是其本身,负数的反码是符号位保持不变,其余位取反
为了解决原码不能计算负数的问题而存在
2、计算
正数的反码不变,负数的反码在原码的基础上,符号位不变。数值取反,0变1,1变0。
3、注意
反码的原码有两个零,在跨0计算时会有1的偏差
三、补码(为了解决反码的跨0计算问题)
1、定义
正数的补码是其本身,负数的补码是在其反码的基础上+1
2、计算机中都是用补码进行存储和运算
3、特殊的-128
四、拓展
1、基本数据类型
隐式转换:前面补0
强制转换:前面消0
2、运算符
& 逻辑与
计算原理
都true才true,其余都为false
| 逻辑或
计算原理
有true则true
<< 左移
小技巧:左移一次乘2
计算原理
>> 右移
小技巧:右移一次除以2
根据原先数字的正负选择符号位的0,1
>>> 无符号右移
不在乎原数字的正负,全补0