rou*_*ter 7 c++ bit-manipulation bit-shift
请考虑以下示例:
第一个案例:
short x=255;
x = (x<<8)>>8;
cout<<x<<endl;
Run Code Online (Sandbox Code Playgroud)
第二种情况:
short x=255;
x = x<<8;
x = x>>8;
cout<<x<<endl;
Run Code Online (Sandbox Code Playgroud)
第一种情况下的输出是255,而第二种情况下的输出是-1.-1因为输出确实有意义,因为cpp进行算术右移.以下是获取-1作为输出的x的中间值.
x: 0000 0000 1111 1111
x<<8:1111 1111 0000 0000
x>>8:1111 1111 1111 1111
Run Code Online (Sandbox Code Playgroud)
为什么在第一种情况下不会发生相同的机制?