位运算 左移右移运算符 >>, <<, >>>

基本知识

左移右移运算符

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

原文地址:https://www.cnblogs.com/frankcui/p/10456939.html