-3

当我将字节键入为十六进制时:

0x10

是否与以下内容相同:

~0x10

有什么不同?

4

2 回答 2

7

~0x10给你一个按位不的0x10ie0xEF

0x10因为二进制是00010000. 这一点不给你11101111-0xEF十六进制

如果您分配0x10给大于一个字节的类型,则反转其位会将其最低有效字节设置为0xEF,将其他字节设置为0xFF

于 2013-04-02T13:07:23.380 回答
0

~是一元按位补码运算符。您可以在 C 规范的 6.5.3.3 中阅读有关它的所有内容,但简而言之,它是一元的,因为它适用于一个操作数;它会翻转位。此外,它对操作数执行整数提升。

因此,在您的情况下,操作数的值为 10 16,即 00010000 2。因为它只有 8 位,所以你可能在一个char类型中有这个。使用~运算符(结合整数提升)将导致 1111111111101111 2(位被翻转)。

于 2013-04-02T13:34:30.367 回答