原码反码和补码
计算机常见数据的分类
机器数&机器数的真值
原码
反码
补码
-
扩展
计算机中常见数据的分类
-
数值类型
- 整数
- 浮点数
-
非数值类型
- 图片
- 音频
- 视频
- 文字
机器数
数值在计算机中的二进制表示形式
注意:==机器数==是带==有符号==的 最高位是符号位,使用==0表示正数==,==1表示负数==
5>0000 0101
一个数据使用表示时,第一位是符号位,剩余是有效位。
字有16位,1位是符号位,15位是有效位
int>整数 4个字节 32位 取值范围:-231~231-1
-2147483648~2147483647
long>长整型8个字节64位 -263~263-1
1000 0111=-7
真值
机器数所对应的二进制的真正数值
==1==000 0111=-7
==0==000 1111=15
原码
原码就是符号位+真值的绝对值
正数:符号位 有效位 +11>000 1011
负数:符号位 有效位 -15>取绝对值15>1000 1111
反码
正数:正数的反码=原码
负数:符号位不变,其余各位逐一取反
[图片上传失败...(image-c698e-1594210556569)]
补码
正数的原码=反码=补码
负数:在负数反码的基础上+1
扩展
为什么需要反码和补码?
在设计计算机时,只涉及了加法器,没有设计减法器
反码:解决了只设计加法运算的问题
缺点:正负相加0的表示不唯一
1-1=1+(-1)
1=0000 0001【反码】
-1=1000 0001【原码】
-1=1111 1110【反】
补码【高位溢出】
1=0000 0001【补码】
-1=1111 1111【补码】
0000 0000
使用条件:不得超过表达范围
使用补码计算
32+12=44
因为负数的补码不能直接读出结果,但是原码可以,将原码转原码,才能读出结果
原码:补码的补码:将补码当原码求补码
计算规则“符号位不变,其余取反,然后加1.
求-128 的补码
一个字节不可以表示-128的原码
1000 0000 1000 0000【-128的原码】
求反码
1111 1111 0111 1111【反码】
0000 0000 0000 0001【加1】
1111 1111 1000 0000【-128的补码】