社区
Java SE
帖子详情
请问16进制数有符号吗?
sleps
2008-09-09 11:52:14
-47对应的16进制数为1000002f还是f000002f??迷糊了 请大家帮忙
...全文
2367
9
打赏
收藏
请问16进制数有符号吗?
-47对应的16进制数为1000002f还是f000002f??迷糊了 请大家帮忙
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sd5816690
2008-09-10
打赏
举报
回复
对应 ffffffd1
测试如下:
System.out.println(Integer.toHexString(-47));
hikaru71
2008-09-10
打赏
举报
回复
2f
计算机里面存储的负数都是补码
原来的数取反加1
火龙果被占用了
2008-09-10
打赏
举报
回复
如果是 32 位有符号 int 数的话,转成 16 进制,最高位的那一个数肯定是大于 7 的。
先把 -47 转成二进制,转换方式:
1,-47 把负号去掉,用 47 转成二进制为 101111
2,将 101111 所有位(含最高的符号位)取反再加 1:
0000 0000 0000 0000 0000 0000 0010 1111
~ 1111 1111 1111 1111 1111 1111 1101 0000
+ 0000 0000 0000 0000 0000 0000 0000 0001
————————————————————————
1111 1111 1111 1111 1111 1111 1101 0001
即:0xFFFFFFD1
beiouwolf
2008-09-10
打赏
举报
回复
16进制看起来不方便
打印成2进制看起来比较清楚,看第一位
dracularking
2008-09-10
打赏
举报
回复
补正 可以说java中基本无 无符号数(there's no unsigned),
但16进制表示法某种程度上可以看成是unsigned type
dracularking
2008-09-10
打赏
举报
回复
首位0 1是二进制的判断标识
java中无有符号数 所以都是将数据对半分一半为正一半为负
对于64bit 16进制数
0x00000000~0x7fffffff是正数
0x80000000~0xffffffff就是负数
网络咖啡
2008-09-10
打赏
举报
回复
1
-2f啊
ZangXT
2008-09-10
打赏
举报
回复
最高位,也就是31位为0表示正,为1表示负
sleps
2008-09-10
打赏
举报
回复
取反再加1 实际上是负数的补码形式 对吧?
Java SE
62,636
社区成员
307,271
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章