itt*_*ryu 3 syntax bit-manipulation bit
在学习了基础知识后,我试图通过做一些问题来了解位操作,并且在某些解决方案中,我似乎看到了这种格式。例如:
N = (N & 0xAAAA)>>1 | (N & 0x5555)<<1
Run Code Online (Sandbox Code Playgroud)
这有什么作用(特别是 0XAAAA 和 0x5555)?这种语法或格式的名称是什么,以便我可以查找?
谢谢
这些是十六进制值。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)
位移运算符( >> 和 << )将每个二进制数字移动一位(取决于箭头的方向)等等。十六进制只是一种更好的格式,可以将位可视化,而不必写出每一位。