实验平台 vs2017
左移位和右移位有区别.
左移位比较简单,就是直接在低位后面补0;
右移位则比较复杂,
假设有10000000的二进制数,往右移动一位,则数变为11000000,原因在于补的高位是原来的第一位,
也就是说如果是01000000,则往右移动一位,变为00100000.
需要注意的是也有一个特殊的情况,这是最令人困惑的
考虑以下两条语句
char a=0x80 //10000000
char b=a<<1>>1;//将a左移一位,再右移一位,赋值给b;
按道理,先左移一位变为00000000,再右移一位应该是00000000
但实际上,b会是10000000
但是还是下面的三条语句,情况就会有不同,
char a=0x80
char b=a<<1;
b=b>>1;
这个时候b就会是我们预料的00000000.
以上就是所有我们需要注意的事项