基本知识
左移右移运算符
1-左移运算符m<<n,表示把m左移n位。左移n位的时候,最左边的n位数将被丢弃,同时在最右边补上n个0。例如:
00001010<<2 = 00101000
10001010<<3=01010000
2-右移运算符m>>n表示把m右移n位。右移n位的时候,最右边的n位将被丢弃。同时在最左边补上n个符号位。例如:
00001010>>2=00000010
10001010>>3=11110001
注意:机器存储的是补码,直接用补码进行计算。(机器数用补码的原因:直接把符号位加入运算,这样子可以把减法转换成加法运算)
正数的原码,补码,反码都是一样的
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]补 [-1] = [10000001]原 = [11111110]反 = [11111111]补
3-无符号右移运算符m>>>n , 用0补位。例如:
10001010>>>3=00010001