[问题] 暨南资工一题C++

楼主: TonyJih (蠕动王)   2011-07-05 09:51:48
#include <iostream>
int main()
{
unsigned s=555;
int i=(s>>4) & ~(~0<<3);
std::cout<<i;
system("PAUSE");
return 0;
}
我的算法是这样:
unsigned s=555
也就是说二进制是0000001000101011
右移4bit后=0000000000100010
not 0=1
1左移3bit后=00000000000001000
not运算后 =11111111111110111
再 and 00000000000100010
楼主: TonyJih (蠕动王)   2011-07-05 10:10:00
找到问题了,问题在于我天真的认为not 0=1,实际上是1111111111111111
作者: robert6408 (Man)   2011-07-05 15:13:00
这题型 最近几年蛮常考的加油 我是去年上暨大资工的 希望有缘见面!
楼主: TonyJih (蠕动王)   2011-07-05 19:22:00
希望有机会当楼上的学弟!今天这题果然出现了,幸好有特别去解= =

Links booklink

Contact Us: admin [ a t ] ucptt.com