计算机原码、反码、补码、移码的计算方式
机器数
一个数字在计算机中的二进制表现形式叫做机器数。
机器数带符号,即区分正负。
用一个数的最高位表示符号(符号位),0表示正数,1表示负数。
示例:9这个数字,用8位机器数表示为00001001,则-9为10001001,最高位1表示是负数。
原码
原码就是这个数的机器数,就是上文的解释。
8位二进制数的最大值:正数的1111111,即01111111;
8位二进制数的最小值:负数的1111111,即11111111;
1111111是127,所以8位二进制数原码的范围:-127~127。
注意范围中有+0和-0,+0的原码是00000000,-0的原码是10000000。
反码
正数的反码是其本身,没有运算。
负数的反码是符号位不变,其余位取反。
示例:9的原码是00001001,反码不变,还是00001001。
-9的原码是10001001,符号位不变其余位取反得到11110110。
0的原码是00000000,反码不变,还是00000000。
-0的原码是10000000,符号位不变其余位取反得到11111111。
补码
正数的补码是其本身,没有运算。
负数的补码是他的反码+1。
示例:9的原码是00001001,补码不变,还是00001001。
-9的原码是10001001,反码是11110110,+1得到11110111。
补码没有+0与-0的区分。
移码
正数、负数的移码计算方式相同,将补码的符号位取反,其余位不变。
示例:9的补码是00001001,符号位取反得到移码10001001。
-9的补码是11110111,符号位取反得到移码01110111。
总结
1.先明确符号位(最高位),1是负数,0是正数。
2.正数的反码、补码都是原码本身。
3.负数的反码是符号位不变,其余位取反,补码是反码+1。符号位始终是1。
4.正数、负数的移码都是补码的符号位取反,其余位不变
计算
已知某数值的补码为10010000,这个数是几?
解答思路:反过来算
首先符号位是1代表是负数,那么反码就是补码-1,得到10001111,原码就是符号位不变,其他取反,得到11110000。进行二进制转化,这个数是 -112。