1llu在C++中的含义
The meaning of 1llu in C++
考虑二进制矩阵的第 i 列用matrix[i]
表示。设D
矩阵的列数。
我的问题:以下代码的结果是什么。事实上,我无法理解1llu
表达的作用。
matrix[i]^((1llu << D)-1)
这必须从二进制表示中查看。
1llu
表示 1 表示为unsigned long long
。
。0000 0000 0000 0001
<< D
移位,1
左 D 次数(位)
如果 D==5,则 :
。0000 0000 0010 0000
- 1
从移位结果中减去 1(在位置 0 ~ D-1 上给出 1)
。0000 0000 0001 1111
按位独占 OR 运算符 (^) 将其第一个操作数的每个位与其第二个操作数的相应位进行比较。如果一个位为 0,另一个位为 1,则相应的结果位设置为 1。否则,相应的结果位设置为 0。
https://learn.microsoft.com/en-us/cpp/cpp/bitwise-exclusive-or-operator-hat?view=vs-2019
用下面的例子很容易解释:
示例 1:1 <<34
示例 2:1llu <<34
如果整数大小为 32 位,则示例 1 将产生 0x0000 0000,因为 1 将下降。 而示例 2 将产生 0x0000 0004 0000 0000
因此,应该在矩阵元素的类型/大小是什么的上下文中查看。
相关文章: