【发布时间】:2013-09-05 08:38:12
【问题描述】:
我正在对 int 进行移位操作,但对它没有按预期输出感到惊讶。
int i, res;
i = 0x80000000;
res = i>>1; //results in 0xc0000000
res = (unsigned int) i>>1; //results in 0x40000000
整数中的一位移位怎么可能只对第 31 位起作用?
【问题讨论】:
-
您确定您的 cmets 正确吗?是不是
0xc0000000而不是0x0c000000? -
两者是一样的
-
注意:在
0x80000000;中设置了MSB -
@thebaconing:不一样——数一数零的个数。
-
@thebaconing 在
0xc0000000MSB 是1而在0x0c000000是0。
标签: c++ c visual-c++ visual-studio-2005