【发布时间】:2021-11-01 13:16:08
【问题描述】:
我有一个名为 vpn 的 uint64_t 变量,我正在尝试获取它的左 9 位。 我知道 vpn 是 45 位长,所以我尝试了以下方法:
uint64_t nineMSB = (vpn & (511 << 36)) >> 36;
但我收到以下警告:
left shift count >= width of type
这是为什么呢? 511 是二进制的 9 个,所以 511
谢谢!
【问题讨论】:
-
511 的类型为
int。试试511ULL -
511是int。试试511ull。
标签: c operating-system bit bit-shift integer-overflow