鱼C论坛

 找回密码
 立即注册
查看: 1396|回复: 6

[已解决]无符号整型输出

[复制链接]
发表于 2020-2-12 20:04:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
-2的无符号整型输出为什么是65534,怎么来的,请指导下,给出详细过程
最佳答案
2020-2-12 21:11:53
首先你得知道无符号数与有符号数有什么区别。有符号数最前面一个为用来保存符号。只有其他位才会用来保存数据。首位为0表示正数,首位为1表示负数。无符号数都是整数,所以不需要符号位。所有位都用来保存数据,所以它的最大数会比有符号数的最大数大两倍。假设-2的二进制表示为1000000000001,
如果用无符号数的格式输出,就会把最前面的1当做数据,所以得到的是一个很大的正数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-12 20:09:37 | 显示全部楼层
本帖最后由 dlnb526 于 2020-2-12 20:10 编辑

short 表示的范围为 - 32767到 32767,而无符号的short表示的范围为0 到 65535
16位的无符号整型数(short),等于-2+65536=65534
希望对你有所帮助!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 20:10:11 | 显示全部楼层
因为 -2 是有符号整形,所以就强制转换成无符号整形
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-12 21:11:53 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
首先你得知道无符号数与有符号数有什么区别。有符号数最前面一个为用来保存符号。只有其他位才会用来保存数据。首位为0表示正数,首位为1表示负数。无符号数都是整数,所以不需要符号位。所有位都用来保存数据,所以它的最大数会比有符号数的最大数大两倍。假设-2的二进制表示为1000000000001,
如果用无符号数的格式输出,就会把最前面的1当做数据,所以得到的是一个很大的正数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-14 00:45:44 | 显示全部楼层
楼上是正解,建议把补码、反码这些知识再巩固一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-14 12:58:11 | 显示全部楼层
那怎么得到65534,能解释下吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-15 23:29:25 From FishC Mobile | 显示全部楼层
张世来4610484 发表于 2020-2-14 12:58
那怎么得到65534,能解释下吗

你可以自己去查一下负2的二进制表示,再把最前面1号位当做数据,换算成10进制应该就是了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 01:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表