1llu在C++中的含义

The meaning of 1llu in C++

本文关键字:C++ 1llu      更新时间:2023-10-16

考虑二进制矩阵的第 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

因此,应该在矩阵元素的类型/大小是什么的上下文中查看。

相关文章: