2025-11-20 06:28:33
0x0f就是十六进制的15等于十进制的15,而-0x7fffffff在32位里是负数,这是补码的规则导致的。比如0x0f直接转换成十进制就是15,而负数要看符号位,比如-0x7fffffff最高位是1,所以是负数,计算方法是取反加一,得到的相反数也就是-。
因为十六进制转换的时候0x0f等于15,而负数要看符号位,比如-0x7fffffff最高位是1,所以是负数,计算方法是取反加一,得到的相反数也就是-。具体来说,0x7fffffff等于十进制的,取反后变成0x80000000,再加1就是0x80000001,但因为符号位存在所以实际是负数。32位整数能表示的最大正数是0x7fffffff对应,所以下一个数就是-。这个转换过程就像用补码表示法,把负数转换成二进制后符号位决定了正负,数值部分通过取反加一得到。比如0x7fffffff对应二进制01111111...11111111,取反后变成10000000...00000000,再加1就是10000000...00000001,这时候最高位1表示负数,剩下的数值部分是0,所以结果就是-。
本题链接: