在C上按位和unsigned int得到错误答案?

问题描述

我有两个数字2147483648808529920存储在unsigned int变量中,但是当我在C中按位进行运算时,答案应该是为1,但我为0。

808529920的二进制格式如下:

110000001100010011000000000000

2147483648的二进制格式如下:

10000000000000000000000000000000
unsigned int a = 808529920;
unsigned int b = 2147483648;

unsigned int ret = a & b;

解决方法

 808529920 == 0b00110000001100010011000000000000
2147483648 == 0b10000000000000000000000000000000

没有共同点,所以您应该得到0而不是1。