[其它产品/技术] 数据类型的有符号和无符号

[复制链接]
 楼主| szt1993 发表于 2024-9-28 21:00 | 显示全部楼层 |阅读模式
一个数据类型为什么还要分有符号和无符号啊,真心累啊。
主要目的还是为了省空间!省空间!省空间!(当然,还有为了配合计算机指令运算效率的原因,这里不深入)。

举个自然语言的例子吧:我们给了4个空间来表示一个数字。



如果我们规定这个数是非负数(无符号),那么,这4个空间可以表示的范围是0000 ~ 9999。



如果我们规定这个数是可正、可负、可零(有符号),那么这4个空间里面就得留一个符号的空间,那么这4个空间可以表示的范围就是-999 ~ +999。



也就是同样的空间,无符号的数据类型可以表示更大的范围。否则,同样的范围,采用有符号的数据类型,就需要更多的空间。

简单点说,unsigned无符号数据类型,对比同类型的signed有符号类型,节省了一个符号占位, 同样的空间大小表示的数据范围更大


那char、short、int、long,既没有明确是unsigned 、signed类型,那到底是有符号还是无符号的?

先说正常的short、int、long,没有指明的情况下,默认是有符号的。也就是short和signed short是一样的。

而char是一个骨骼奇异的品种,在没有特别指明是unsigned、signed类型时, 有的地方是有符号的,有的地方是无符号的


而float、double默认就是有符号的,且没有无符号类型,也就是只有可正、可负、可零的类型。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
shenxiaolin 发表于 2024-9-29 11:25 | 显示全部楼层
通常是最上面一位
小小蚂蚁举千斤 发表于 2024-9-29 19:16 | 显示全部楼层
数据类型的有符号和无符号一定要注意
AdaMaYun 发表于 2024-9-30 10:48 | 显示全部楼层
其实一般都按照有符号数进行计算比较合适
suncat0504 发表于 2024-10-31 15:43 | 显示全部楼层
对于整数,正负还好理解。对于小数,涉及二进制变换的,才头疼。
suncat0504 发表于 2024-10-31 15:44 | 显示全部楼层
数值的计算,源于需求。
610u 发表于 2025-4-30 22:44 | 显示全部楼层
从 空间效率 和 计算效率 的角度来看,它确实有其存在的必要性。
lvluoo 发表于 2025-5-30 14:56 | 显示全部楼层
说实在的,不会处理有符号数
工程师犹饿死 发表于 2025-5-31 21:28 | 显示全部楼层
同样的存储空间(比如 8 位),无符号的能多表示一倍的正整数。
工程师犹饿死 发表于 2025-5-31 21:28 | 显示全部楼层
无符号没有负数的“负担”,所以同样空间可以“多装点数据”。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

344

主题

2836

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部