数的机器表示的学习体会

来源:互联网 发布:php开源论坛程序 编辑:程序博客网 时间:2024/06/14 04:05

       小弟自从学习数的机器表示后,对补码尤为不解。今天重新看了一下以前教材,略有体会,故分享之,愿能帮助同样迷茫的朋友。

  废话少说。直入正题。

  我们知道计算机的有符号数有三种表示法——原码、反码、补码。这里着重讲补码(只讨论整数)

问:四字长表示的机器数补码能表示-8,而原码、反码却不行?

      :由于公式编辑不了(或者我不会吧),整数原码、反码、补码的定义请自行参照。

     -8,真值为-1000, 参照定义,原码和反码均无表示,为什么没有呢?我们看看原码和补码0的表示吧,参照定义

    原码:[+0]=0000;[-0]=1000,四位数最多表示16个编码,而0占两个,试问-8如何表示,至于正负0为什么要出现,哥也不知Orz。反码也是类似。不赘述。看补码则不然,0只有     0000。

    明白了吧,正是由于补码刚好还有一个编码剩余,-8可以表示出来。

问:不是说取反加一得补码吗?为什么-8取反加1不是1000???

            首先,取反加1的数是必须先用原码表示,-8没有原码(四字长表示时),哪来的取反加一(不要乱套!!!要理解记忆),根据定义[-8]补=2^4-1000=1000

          就说这么一点吧,如有错漏,请指正!!!