给力讲解:http://www.blogjava.net/zqli/archive/2007/09/21/147164.html
1.原码表示法
正数的符号位用0表示,负数的符号位用1表示,后面跟着原数值,二进制数的这种表示法称为原码表示法。
【例 2-2-1】假定字长为8位,写出两个十进制数+15与-15的原码。
解:
[+15]原= 0 0001111
[-15]原= 1 0001111
原码表示法简单易懂,但是若遇到两个异号数相加或两个同号数相减,就要做减法运算。为把减法运算转换为加法运算与逻辑运算,便用到了反码与补码。
2.反码表示法
正数的反码与原码相同;负数的反码,符号位用1表示,后面跟着的数值位按位取反,即1变为0,0变为1,二进制数的这种表示法称为反码表示法。
【例2-2-2】假定字长为8位,写出两个十进制数+15与-15的反码。
解:
[+15]反= [+15]原= 0 0001111
[-15]反= 1 1110000
3.补码表示法
正数的补码与原码相同;负数的补码,符号位用1表示,后面跟着的数值位相对原码按位取反后,末位加1,二进制数的这种表示法称为补码表示法。
因为给定数是负数,则符号位为“1”。后七位:-7的原码(10000111)→按位取反(11111000)(负数符号位不变)→加1(11111001) 所以-7的补码是11111001。
4. 移码表示法
只要将补码的符号位取反,便可获得相应的移码表示