2025-11-08 04:25:07
0xfff就是十六进制的4095,而-0xfff在编程里是-4095。前者是无符号数直接转换,后者加了负号。比如在C语言里,负数前缀会把0xfff转成二进制1111 1111 1111 1111,然后加上符号位变成1000 0000 0000 0000,这样结果就是-4095对吧?不过有些语言可能用补码表示负数,比如在32位整数里-0xfff其实是,因为符号位扩展后高位全1,实际数值要减去2的31次方。具体要看编译器怎么处理符号位,比如用int类型的话,-0xfff会被当作-4095,但如果是unsigned int的话就会报错,因为0xfff已经是最大值了。所以要看上下文怎么用这个表达式。
本题链接: