[英]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.