为什么〜0xF等于0xFFFFFFF0?

另外,~0xF && 0x01 = 1怎么样?也许我也没有得到0x01。

最佳答案

问题1



首先,这意味着您要在32位计算机上运行它。这意味着0xF实际上是hexadecimal中的0x0000000F

这意味着0xF为
二进制格式的0000 0000 0000 0000 0000 0000 0000 1111
~运算符表示NOT操作。 Tt在二进制表示中每0变1和每1变0。那将使〜0xF为:
二进制格式的1111 1111 1111 1111 1111 1111 1111 0000

那实际上是0xFFFFFFF0

请注意,如果在16位计算机上执行此操作,~0xF的答案将是0xFFF0

问题2

您写错了声明,应该是0xF & 0x1。请注意,0x1 0x010x0010x0001都相同。因此,让我们将此十六进制数更改为二进制表示形式:
0xF为:
0000 0000 0000 0000 0000 0000 0000 1111
0x1将是:
0000 0000 0000 0000 0000 0000 0000 0001&操作遵循以下规则:

0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1

因此,做到这一点,您会得到以下结果:
0000 0000 0000 0000 0000 0000 0000 0001
实际上是0x1

其他
|表示按位或运算。它跟随:
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1
^表示按位XOR运算。它跟随:
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0

您可以获取更多信息here

关于c - 为什么在32位计算机上〜0xF等于0xFFFFFFF0?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12398889/

10-09 18:40