美文网首页
备考预习笔记(原码、反码、补码、移码)

备考预习笔记(原码、反码、补码、移码)

作者: kevin5979 | 来源:发表于2021-02-04 13:17 被阅读0次

    原码

    原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值

    [+1]原 = 0000 0001
    [-1]原 = 1000 0001 
    

    因为第一位是符号位, 所以8位二进制数原码的取值范围 -(2^(n-1)-1)~2^(n-1)-1 => [-127, 127]

    [1111 1111 , 0111 1111] --> [-127 , 127]
    

    反码

    • 正数:正数的反码是其本身
    • 负数:负数的反码是在其原码的基础上, 符号位不变,其余各个位取反
    [+1] = [0000 0001]原 = [0000 0001]反
    [-1] = [1000 0001]原 = [1111 1110]反
    

    因为第一位是符号位, 所以8位二进制数反码的取值范围 -(2^(n-1)-1)~2^(n-1)-1 => [-127, 127]

    [1000 0000 , 0000 0000] --> [-127 , 127]
    

    补码

    • 正数:正数的补码是其本身
    • 负数:负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1 =>(即在反码的基础上+1)
    [+1] = [0000 0001]原 = [0000 0001]反 = [0000 0001]补
    [-1] = [1000 0001]原 = [1111 1110]反 = [1111 1111]补
    

    补码的取值范围 -2^(n-1)~2^(n-1)-1 => [-128, 127]


    移码

    • 在补码的符号位取反,其余位不变
    [+1] = [0000 0001]原 = [0000 0001]反 = [0000 0001]补 = [1000 0001]移
    [-1] = [1000 0001]原 = [1111 1110]反 = [1111 1111]补 = [0111 1111]移
    

    移码的取值范围 -2^(n-1)~2^(n-1)-1 => [-128, 127]


    疑问:为什么原码、反码和补码的取值范围不一样?
    • 原码和反码的+0 和 -0不是同一个表示
    • 移码的+0 和-0是同一个表示
    [+0] = [0000 0000]原 = [0000 0000]反 = [0000 0000]补
    [-0] = [1000 0000]原 = [1111 1111]反 = [0000 0000]补
    [+0]原 != [-0]原
    [+0]反 != [-0]反
    [+0]移 == [-0]移
    
    END

    相关文章

      网友评论

          本文标题:备考预习笔记(原码、反码、补码、移码)

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