计算机为什么要区分无符号数与有符号数

发布于 2022-09-12 04:19:08 字数 79 浏览 11 评论 0

如题,我在网上搜到的一个答案是:内存大小不一样,无符号占用内存小,当不需要负数,内存要求很小的情况下一般都用无符号数。
请教一下各位的看法

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沫离伤花 2022-09-19 04:19:08

???

胡说八道呢这不是?误人子弟啊!

内存占多大,是由数据类型决定的,跟有无符号有啥关系?

之所以要区分有无符号,是因为电子计算机工作方式决定的。

电子要么阴、要么阳,跟数据二进制一样。

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 位存就很浪费。

上古时代,内存是很金贵的,所以能省则省。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文