回 帖 发 新 帖 刷新版面

主题:16进制问题。。求详细解释!!!

执行语句printf("%x",-1);
为什么屏幕显示ffffffff

回复列表 (共4个回复)

沙发

探索中。

板凳

十六进制是不能显示负数的,

3 楼

在计算机存储一个数据时是按0,1方式存储,正数直接是它转换的形式,而负数则是以它补码的反码的形式后面再加1,存储,而十六进制数则是无符号的,所以在输出时,会将原来的符号位也按一位输出。所以-1的补码形式每位全是1,最后按十六进制输出时为八个f。

4 楼

[quote]在计算机存储一个数据时是按0,1方式存储,正数直接是它转换的形式,而负数则是以它补码的反码的形式后面再加1,存储,而十六进制数则是无符号的,所以在输出时,会将原来的符号位也按一位输出。所以-1的补码形式每位全是1,最后按十六进制输出时为八个f。[/quote]
表述严重错误,在GOOGLE里搜原码、反码、补码

我来回复

您尚未登录,请登录后再回复。点此登录或注册