gpt4 book ai didi

c++ - C++ 中的位移位

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:50 26 4
gpt4 key购买 nike

我不明白为什么这给了我同样的答案:

 long long a = 3265917058 >> 24;
std::cout << a << std::endl; //194

long long ip = 3265917058;
long long b = ip >> 24;
std::cout << b << std::endl; //194

但这不是:

 long long a = (3265917058 << 16) >> 24;
std::cout << a << std::endl; //240

long long ip = 3265917058;
long long b = (ip << 16) >> 24;
std::cout << b << std::endl; //12757488 - **i want this to be 240 too!**

更新:我想要 32 位移位,但是我如何对一个对于 int 变量来说太大的数字进行 32 位移位?Update2:我的答案是制作 unsigned int ip。然后一切都会好的。

最佳答案

您的文字常量 3265917058 是一个 int。添加 LL 后缀以获得预期的行为(u)r:

long long a = (3265917058LL << 16) >> 24;

关于c++ - C++ 中的位移位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4747082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com