C语言里 -1用%u形式输出为什么是65535啊?为什么不是1呢?

2024-11-19 09:05:25
推荐回答(5个)
回答1:

计算机中的数 对应的二进制第一位在有符号时,1为负,0为正

所以-1的首位是1

再者负数的存储是不用原码的,而是补码

所以-1的%u就是65535了(1111 1111 1111 1111)

回答2:

无符号不是说把负号去掉,而是把最高位的1不看作负号。-1存储的形式为1111 1111 1111 1111(补码),最高位1不看作负号,计算得65535。

1的存储是0000 0000 0000 0001正数的补码和原码是一样的,不变

回答3:

兄弟,你该补补基础了,x86里存储形式是补码,有符号数1的补码如果当作无符号数是1,-1的补码如果当作无符号数是65535

回答4:

%u 无符号数
-1 -- 不是1,用它的补码

回答5:

1的存储形式是0000 0000 0000 0001