补码

作者: laxe | 来源:发表于2017-06-10 18:17 被阅读0次

    编码方法

    X≥0时,[X]补码=X;X≤0,[X]补码=2^n-|X|。n是表示x的位数,如果用一个字节来表示x,n就是8。
    0按两种方式计算的补码都是一样的,不过后者需要忽略溢出。
    X<0时,补码计算也可以这样描述:其绝对值的最高位填1,其余位按位取反,然后再加1。

    x 补码
    127 0111 1111
    ... ...
    2 0000 0010
    1 0000 0001
    0 0000 0000
    -1 1111 1111
    -2 1111 1110
    -3 1111 1101
    ... ...
    -128 1000 0000

    扩展

    补码数要扩展时,正数是在符号的前面补0,负数是在符号的前面补1。也就是说,补码数扩展实际上是符号位的扩展。

    范围

    对n位整数来说:
    无符号数,0≤N≤2^n-1
    有符号数,-2(n-1)≤N≤2(n-1)-1

    运算

    法则1:两个数的补码之和等于该两数和的补码。即 [ X ]补码 + [ Y ]补码 = [ X + Y ]补码
    X= 00000101
    Y= 00000011
    [X]补码= 00000101
    [Y]补码= 00000011
    [X]补码+ [Y]补码= 00001000
    X+Y = 00000101 +00000011 = 00001000
    [X+Y] 补码= [00001000]补码 = 00001000

    法则2:一个数的相反数的补码等于该数补码各位按位取反(包括符号位),末位加1。即 [-X] 补码 = [X]补码按位取反后加1
    X= 0000101(十进制 +5)
    [ X] 补码= 00000101(根据补码定义)
    [-X] 补码= 11111011(根据补码定义)
    [-X] 补码= 11111010+1= 11111011

    法则3:补码运算的结果也是补码。

    结论

    减法可用加法来实现。因为乘法是加法的简便运算,除法是减法的简便运算,因此,乘、除法也可以用加法实现。从而,计算机只要有了做加法的能力,就可以完成四则算术运算了。

    相关文章

      网友评论

          本文标题:补码

          本文链接:https://www.haomeiwen.com/subject/rihcqxtx.html