计算机为什么要区分无符号数与有符号数
如题,我在网上搜到的一个答案是:内存大小不一样,无符号占用内存小,当不需要负数,内存要求很小的情况下一般都用无符号数。
请教一下各位的看法
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如题,我在网上搜到的一个答案是:内存大小不一样,无符号占用内存小,当不需要负数,内存要求很小的情况下一般都用无符号数。
请教一下各位的看法
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
???
胡说八道呢这不是?误人子弟啊!
内存占多大,是由数据类型决定的,跟有无符号有啥关系?
之所以要区分有无符号,是因为电子计算机工作方式决定的。
电子要么阴、要么阳,跟数据二进制一样。
0000 0000 就是 8 个阴,换算成十进制就是 0;1111 1111 就是 8 个阳,不考虑符号换算成十进制就是 255,这也就是 8 位整数的范围。要 8 个电子当然就占 8 位,跟符号有啥关系?
但现实中一定有负数啊,负号咋用电子表示?于是就拿第一位电子当正负号吧,0 就是正,1 就是负。所以 8 位整数范围就变成了 -128~127(怎么算的,自行恶补补码相关知识)。但还是 8 位啊,内存还能变小??
【补充】
发完答案我突然反应过来了,你说内存占用小也有一定道理。
比如要存 200 这个数,如果是无符号的、直接用 8 位(在大多数编程语言中也就是
byte
)就能存的下了。但如果是有符号的,8 位最大也才 128,所以要存就只能是 16 位(在大多数编程语言中也就是
short
)。但如果这个数最大取值也就是 200,那么用 16 位存就很浪费。上古时代,内存是很金贵的,所以能省则省。