永发信息网

执行语句printf("%x",-1)结果为什么输出ffffffff,

答案:3  悬赏:20  手机版
解决时间 2021-04-07 05:14
  • 提问者网友:像風在裏
  • 2021-04-06 20:55
执行语句printf("%x",-1)结果为什么输出ffffffff,
最佳答案
  • 五星知识达人网友:北城痞子
  • 2021-04-06 21:31
这个结果是
2^32-1=1111..... 32个1 那么转化成16进制就是8个f

1111 -》f
1110-》e
1101-》d
1100-》c
1011-》d
1000-》a
0111-》9追问哪里来的2^32-1啊?追答我是说在unsigned情况下是这个值,存储也是按这个值存储的追问就这么一道题也没说神马状态,只要结果,你说清楚点啊追答计算机存储都是补码存储
那么-1
就是我假设8为,本来32位
-1 源码: 1000 0001
反码: 1111 1110
补码: 1111 1111
那么就是 ff
如果是32位就是8个f,知道了吧
全部回答
  • 1楼网友:舊物识亽
  • 2021-04-06 22:21
"%x"或"%X"输出的16进制整数(0 -- 9,a -- f),对于
int a = 255;
printf("%x",a); // 输出的是:ff

printf("%X",a); // 输出的是:FF追问嗯,可是树上答案为什么是ffff 四个f?追答是呀。这里的a = 255,所以是FF。
  • 2楼网友:长青诗
  • 2021-04-06 21:55
%x 是指十六进制,-1的十六进制表示就是FFFFFFFF
另外 常见的 有 %d %f,都是十进制的,分别是整型和浮点型。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯