计算机中二进制数的表示方法都是补码吗?( 二 )

Patterson和Hennessy老爷爷和我们说了很多道理,最后,找到了表示signed numbers的一种最优方法:补码表示~~ 所以,我认为,补码是用来表示signed numbers的,原码是用来表示unsigned numbers的,至于浮点数,IEEE 754里面又有一套表示方法(移码应用到其中)。其实。。。讲道理的话。。。干嘛要用补码表示unsigned int呢?还浪费了1 bit.。。。导致能表示的范围直接缩小一半啊有木有!!!或者。。。直接看C语言就好啦~~~C中的unsigned in t和 int 的表示范围。。。对吧。。。—————————————————————————————————————————— 以上是我的一些看法,如有错误,欢迎指正。
■网友
对@自由无用的蔬菜 的答案补充一下,计算机中,补码是用来表示有符号的负数,方便有符号负数运算,signed numbers中正数的依然是以原码形式保存,因为正数的补码和原码是相同的。
所以可以说是二进制在计算机中都是以补码形式储存。
【计算机中二进制数的表示方法都是补码吗?】 对有符号数取补码一方面好处是方便计算机进行有符号运算,
另一方面好处就是求有符号正数的补码时,可以自动将符号位处理一并处理了。
例如7的
原码:0 000 0111 (此时符号位为0,表示正数)
补码:1 111 1001 (前面的符号位自动在取补码的时候转换了)
计算机用此时7的补码来表示-7,这样有符号的负数运算就可以用电路实现:
0000 0111
+ 1111 1001
= 0000 0000
但是,这里需要注意一下,一个有符号负数求补码的话,此时不能顺便将符号位一并处理了,
需要单独将符号位孤立起来,剩下的部分再取反加一求补码,例:
-7二进制有符号数:
1 0000111
其补码:
1 1111001
有符号二进制数在计算机里都是以其正数的补码的形式存在的,
即,有符号的-7是1000 0111,但在计算机里是以1111 1001形式储存的。
■网友
floating-point notaion 中的 exponent 可能是用 excess notation 的。参考文献:J.Glenn Brookshear Computer Science: An Overview 11th Edition
推荐阅读
- 有啥方法,网站,项目可以自己练习计算广告学
- 大部分黑客或安全研究员读的是啥「大学专业 」
- 在哈尔滨工业大学计算机系就读是啥样的体验
- 计算机技术与科学专业怎样利用高中毕业的暑假
- 非计算机专业想要利用课余时间深入自学C++,想要找到比较体面的工作大概需要啥水平
- 「巧克力中富含黄烷醇,能够增强脑部活动能力;因此人均巧克力消费量越高的国家,按人口平均计算的诺贝尔奖得主人数就越多。」这种说法科学么
- 有点计算机基础的人想尽快找份编程的工作。哪种编程的工作最好找还需要学些啥
- 硕士研究生选通信还是计算机视觉
- 华威大学计算机本科咋样
- 中兴努比亚 Z5 的边框到底有多窄
