笔记
原码反码补码
计算机中常见数据的分类
机器数和机器数的真值
原码
反码
补码
扩展知识
为什么需要反码和补码
使用补码计算
补码转原码
机器数
数值在计算机中的二进制表示形式
注意:机器数是带有符号的,最高位是符号位,使用0表示正数,使用1表示负数
5->0000 0101
一个数据表示时,第一位为符号位,剩余的为有效位
字16位 1位符号 15位有效数据位
int->整数 4个字节 32 -2147483648—2147483647
-231—232-1
long->长整型8个字节64 一位符号63 -263-263-1
1000 0111=-7
真值
机器数所对应的二进制的真正的数值
1000 0111=-7
0000 1111=15
1000 1010=-10
原码
原码就是符号位加上真值的绝对值
正数:符号位 有效位 +11 11-> 000 1011
0000 1011
负数:符号位 有效位 -15->取绝对值 15->000 1111
1000 1111
求原码:
34 00100010
-39 10100111
-55 10110111
反码
正数:正数的反码=原码
负数:符号位不变,其余各位逐一取反,只有两种状态[0,1] 1->0 0->1
-49
原码 10110001
补码 11001110
-36
原码 10100100
补码 11011011
补码
正数:正数的原码=反码=补码 如+3 0000 0011[原]=0000 0011[反]=0000 0011[补]
负数:先求得反码,在负数反码的基础上,加1
原码:11000001
反码:10111110
补码:10111111
10100101
11011010
11011011
11111000
10000111
10001000
扩展
为什么需要反码和补码?
在设计计算机时,只设计了加法器,没有设计减法器;
5-3=5+(-3)
原码不可以直接计算的!
反码:解决了只设计加法器,使用加速器进行减法运算的问题;
缺点:正负相加0的表示不唯一;
补码[高位溢出]
1=0000 0001[补]
-1=1111 1111[补]
0000 0001
1111 1111
0000 0000
使用补码计算
67-49
01000011
10110001
11001110
11001111
00010010
-33-23
10100001
11011110
11011111
10010111
11101000
11101001
11001000
将补码转原码
因为负数的补码不能直接读出结果,但是原码可以,所以将补码转原码,可以读出负数的值;
补码->原码
原则:补码的补码
把补码当原码,求补码
计算规则:符号位不变,其余取反,然后加1;
求-128的补码 为1000 0000[-128补]
一个字节,不可以表示-128的原码
1000 0000 1000 0000[-128的原码]
求反码
1111 1111 0111 1111
加一
1111 1111 1000 0000
1000 0000
2439

被折叠的 条评论
为什么被折叠?



