相关疑难解决方法(0)

当使用超过32次时,32位整数为什么不按预期工作,为什么不移位"<<"?

当我编写以下程序并使用GNU C++编译器时,1我认为输出是由编译器执行的旋转操作引起的.

#include <iostream>

int main()
{
    int a = 1;
    std::cout << (a << 32) << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但从逻辑上讲,正如所说的那样,如果位溢出位宽就会丢失,输出应为0.发生了什么?

代码在ideone上,http: //ideone.com/VPTwj .

c++ bit-shift

59
推荐指数
7
解决办法
5万
查看次数

打印数字的二进制表示

我想打印一个二进制表示int.我的解决方案似乎对工作都intunsigned int在Visual Studio中,但有人告诉我,这是错误的.有人看到错误吗?如果是这样,为什么我的程序似乎对我有用?

void printbin(int n)
{
    unsigned int i = 1<<31;

    for (int j=0; j<32; j++)
    {
        if ((n & i) != 0)
            printf("1");
        else
            printf("0");
        i = i>>1;
    }

    printf("\n");
}
Run Code Online (Sandbox Code Playgroud)

c bit-manipulation bit

6
推荐指数
1
解决办法
1347
查看次数

标签 统计

bit ×1

bit-manipulation ×1

bit-shift ×1

c ×1

c++ ×1