1 .向左移位。 如果左移的位数超过该数值类型的最大位数,编译器就会用左移的位数去除该类型的最大位数,用馀数进行移位。 舍弃最高位,用0补充最低位。 左移相当于乘法,左移一位相当于乘法2,左移二位相当于乘法4。 即,左移一位相当于2的n次幂。
例如:
int i=1,j=0x80000000; //int为32位;
i=i33; //332=1左移1位,I变为2
j=j33; //332=1左移一位,j变为0,舍去最高位
2 .对于有符号整数(例如,int型),右移位保持为已编码比特。 在已编码比特向右移位之后,正数的补数为零,负数的补数为一,即汇编语言中的算术向右移位,或者如果移位的比特数超过了模具的长度,则取馀数并移位馀数。 右移位对应于除法,右移位一位除以2,右移位二位除以4,即右移位数除以2的n次幂。
例如:
int i=0x80000000;
i=i1; //i的值不会变为0x40000000,而是oxc0000000
左移运算:将51,00000101左移1位,为00000010,为10D。 例如,如果54==5乘以2的4次方,则值为80。
右移运算:将51,00000101右移1位,为00001010,为2D。 例如,54==5除以2的4次方得到的值是0。
//0X表示十六进制数,0表示八进制数。
//二进制计算: 2的0次方2的1次方2的平方 2的n次方。
(/与运算)两真为真,两假为假,真伪为假。
//运算:两真为真,两假为假,真伪为真。