主题:16进制问题。。求详细解释!!!
lshua
[专家分:0] 发布于 2012-05-13 12:12:00
执行语句printf("%x",-1);
为什么屏幕显示ffffffff
回复列表 (共4个回复)
沙发
海盗许毅 [专家分:120] 发布于 2012-05-13 17:42:00
探索中。
板凳
爱上你是错 [专家分:0] 发布于 2012-05-14 09:16:00
十六进制是不能显示负数的,
3 楼
释怀曾经 [专家分:30] 发布于 2012-05-15 20:53:00
在计算机存储一个数据时是按0,1方式存储,正数直接是它转换的形式,而负数则是以它补码的反码的形式后面再加1,存储,而十六进制数则是无符号的,所以在输出时,会将原来的符号位也按一位输出。所以-1的补码形式每位全是1,最后按十六进制输出时为八个f。
4 楼
强强 [专家分:4740] 发布于 2012-05-16 08:50:00
[quote]在计算机存储一个数据时是按0,1方式存储,正数直接是它转换的形式,而负数则是以它补码的反码的形式后面再加1,存储,而十六进制数则是无符号的,所以在输出时,会将原来的符号位也按一位输出。所以-1的补码形式每位全是1,最后按十六进制输出时为八个f。[/quote]
表述严重错误,在GOOGLE里搜原码、反码、补码
我来回复