java<<、>>、<<<、>>>的计算

四个都是移位运算符,不是10进制的移位,是转换为2进制的移位

1、m<<n:m左移n位,也就是m转化成二进制,里面的数字左移n位

十进制m1=9876‬;m2=-9876‬;

m1<<3::::::m1=9876‬=0000 0000 0000 0000 0010 0110 1001 0100‬------------->左移三位:0000 0000 0000 0001 0011 0100 1010 0000------>79,008‬:::::::::::::::::::::::::::9876‬*(2^3)=79008

m2<<3::::::m2=-9876‬=1111 1111 1111 1111 1101 1001 0110 1100------------->左移三位:1111 1111 1110 1100 1011 0110 0000------>-79,008‬:::::::::::::::::::::::::::-9876‬*(2^3)=-79008

 m<<n计算方法:m*(2^n)

2、m>>n:m右移n位,也就是m转化成二进制,里面的数字右移n位

 m<<n计算方法:m/(2^n)

3、m<<<n:m不计符号左移n位,也就是m转化成二进制,里面的数字左移n位

符号即正负符号,一般正数空位为加0,负数空位为加1;不计符号也就是都以正数对待,因此对正数没有影响,和m<<n相同;

负数需要计算2进制,移动得到新的二进制数字后,再计算得到10进制数字结果

3、m>>>n:m不计符号右移n位,也就是m转化成二进制,里面的数字右移n位

原理同m<<<n一样,对正数没有影响,和m<<n相同;

负数需要计算2进制,移动得到新的二进制数字后,再计算得到10进制数字结果

猜你喜欢

转载自www.cnblogs.com/lcxz/p/11376120.html