学习位操作时的“0xXXXX”语法是什么?(其中 X 是大写字母数字字符)

itt*_*ryu 3 syntax bit-manipulation bit

在学习了基础知识后,我试图通过做一些问题来了解位操作,并且在某些解决方案中,我似乎看到了这种格式。例如:

N = (N & 0xAAAA)>>1 | (N & 0x5555)<<1
Run Code Online (Sandbox Code Playgroud)

这有什么作用(特别是 0XAAAA 和 0x5555)?这种语法或格式的名称是什么,以便我可以查找?

谢谢

Mil*_*ond 5

这些是十六进制值。0xAAAA 相当于 1010101010101010。A = 1010(二进制)。因此,因此 4 A 是二进制值的四个序列。

当你将它与一个二进制 & 结合起来时,你会寻找与模式 1010 一致的 N 的所有位......其中两个位都是 1 并只保留这些位。

例子:

  1110101010101001
& 1010101010101010
------------------
  1010101010101000
Run Code Online (Sandbox Code Playgroud)

0x5555 也是如此。5 = 0101。希望你明白。

另一方面,二进制或运算符在二进制数为 1 的每个位置都返回 1,如下所示:

  1010
| 0101
------
  1111
Run Code Online (Sandbox Code Playgroud)

位移运算符( >> 和 << )将每个二进制数字移动一位(取决于箭头的方向)等等。十六进制只是一种更好的格式,可以将位可视化,而不必写出每一位。