繁体   English   中英

设置int64_t中的所有位

[英]Setting all bits in int64_t

从下面的代码我希望将x中的所有位设置为1,但不知何故只设置了前32位:

int64_t x = 0xFFFFFFFF;
x<<32;
x|=0xFFFFFFFF;

注意:在每行之后打印x会产生4294967295(32位低位设置为1)。 此外,尝试使用numeric_limits<int64_t>::min()没有成功。 我的问题是如何设置x中的所有位? 使用RHEL5.5。

谢谢

x<<32计算将x向左移位32位的结果, 并且不对该值做任何处理 你想用x <<= 32代替。

为什么不int64_t x = -1 uint64_t x = ~0

这将有效:

int64_t x = ~0LL;   (iner

要么

int64_t x = -1LL;

你可能没有LL ,但不能保证 - 取决于编译器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM