关于16位最小数是-32768问题。符号位和最高位。 - 爱问答

(爱问答)

关于16位最小数是-32768问题。符号位和最高位。

16位,第一位是符号位,所以只有15位的数据?

都说范围是-32768~32767  

首先  32768 原码(1000 0000 0000 0000)

所以最大正数是 32767 (0111 1111 1111 1111)最高位是符号位,没毛病。

我的问题是下面:

我想问-32768原码难道不是?(1 1000 0000 0000 0000 0000)这样的话就有17位了

但是计算机是存的16位补码,那-32768的补码难道不是(1 1000 0000 0000 0000)

最高位符号位同样是顶到17位去了?可我这个是16位计算机啊

书上说-32768的补码是(1000 0000 0000 0000)

在16位计算机第一位是符号位的况,这个补码是怎么得来的?符号位呢?

然后(1000 0000 0000 0000)补码形式,最高位为符号位。把这个还原成原码,这个不是-0的原码,补码么?按照符号位不动,末位减一,各位取反。

我现在已经特别蒙蔽了。为啥我算的-32768 带有符号位的是17位,书上写的最高位符号位的是16位。

最小数本是-32767,只是有一个0的问题;

两种表示一个0有点浪费,所以人为规定用-0表示-32768,+0表示0。


剩下15位二进制数的最大值是每一位数都是1的况:

即2^15-1=32767,32768化成二进制为1000 0000 0000 0000,对于带符号整数来说就是-0。


我们看32767加上1的情况:-

一般在计算机上的话应该是-32768的结果。
原因:
32767二进制:0111 1111 1111 1111B
32767加上1,运算电路将该值修改为:

1000 0000 0000 0000B(注意一般无特殊保护逻辑的电路不能区分符号位,所有位一视同仁)


当软件读取该值时,由于符号位(最高位)为1,于是将其视为补码(计算机中以补码存储负数),于是对其取原码得到上述值。

总共2的16次方共65536个数,0算一个数,剩下的65535个数分成正数和负数两组,肯定两组含有的数值的个数是不等的如果0算两个数(例如一个正0一个负0),或者多加一个表示运算出错(不表示任何数)的“错误值”,那么正数和负数两组的个数就能相等了——不过这样用起来会很奇怪吧,比如正0和负0的值相等,却是不同的数

下一篇:微信注册好友辅助验证身份验证错误怎么办?

上一篇:平板电脑摔地上打开是黑屏怎么办,都过好几天了

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?