美文网首页
有符号数和无符号数

有符号数和无符号数

作者: KnKing | 来源:发表于2017-07-20 16:57 被阅读0次

    1.无符号数是相对于有符号数而言的,指的是整个机器字长的全部二进制位均表示数值位,相当于数的绝对值,表示非负数。

    8位空间能表示的无符号数为[0000-0000]~[1111-1111] <==> 0~255
    

    2.有符号数指的是整个机器字长的部分二进制位用于表示符号位,能表示正负数。

    8位空间能表示的有符号数:
    
    最高位表示符号位: 0表示正数,1表示负数
    
    正数范围:[0000-0000]~[0111-1111] <==> 0~127
    
    负数二进制范围:[1000-0000]~[1111-1111] 
    
    那是不是-1的二进制码就是1000-0001呢?
    
    但是我们看到的都是-1的二进制码是1111-1111呀!
    
    难道我们推理错了吗?其实我们看到的没错,我们推理的也没错,只是不同的选择罢了。
    
    -1 <=> 1000-0001 (这是我们的选择方案A)
    -1 <=> 1111-1111 (这是现实的选择方案B)
    
    新的问题来了,既然都没有错为什么现实的选择是1111-1111来表示-1而不是1000-0001呢?(why not me ?)
    
    我们都知道:
              (-1) + (1) = 0
    此刻有两种情况:
              1000-0001 + 0000-0001 = 1000-0010    (方案A)
              1111-1111 + 0000-0001 = 1-0000-0000  (方案B)
    相信此刻我们都明白了是怎么回事:
       显然方案A的到的结果1000-0010没有的到0的二进制码0000-0000(显然我们也可以这么用只是计算机在计算的时候得对1000-0010进行判断然后转换)
       方案B的到的结果1-0000-0000发现已经进位啦,因为是8位的空间所以最终存下来的只有0000-0000也就是0的二进制码。(其实进位1没有被丢弃,是被保存到标志寄存器的进位标识位啦)
    
    这就是为什么现实选择的是B方案而没有选择我们推导的A方案的原因啦.B方案方便了计算机的运算
    
    有没有觉得 (-n) 和 (n)是像是一个圆的一部分互补填满整个圆 (-n) + (n) = 1-0000-0000 
    
    这就是补码背后的含义,以后就可以不用死记公式负数的二进制码啦(^_^)

    相关文章

      网友评论

          本文标题:有符号数和无符号数

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