M进制左移N位意味着乘以M的N次方,右移N位意味着除以M的N次方。若不能整除,则舍弃余数。
二进制左移n位意味着乘以2的n次方,右移n位意味着除以2的n次方。
<<运算符表示数据整体向左移动。
举例:
|0100 0001| << |0000 1000| (左移三位)
|1011 0001| << |1000 1000| (左移四位)
>>运算符在右移的过程中,用符号位填充高位。
举例:
|0100 0001| >> |0000 1000| (右移三位)
|1011 0001| >> |1111 1011| (右移四位)
>>>运算符在右移的过程中,用0填充高位。不存在<<<运算符。
举例:
|0100 0001| >>> |0000 1000| (右移三位)
|1011 0001| >>> |0000 1011| (右移四位)
使用此方法,可以将一个负数换算成与其绝对值相同的负数。
储存一个汉字需要用32bit,我们可以用byte数组进行存储。
假设我们有以下数据:00010010 10101001 01010101 10101010
这是一个正数,四个区域中每个区域都是正数。但是如果把它拆成四个数,区域二和区域四中的数就被拆成了负数。要想把四个数(两正两负)都转换为正数,并合成一个正数,我们需要把区域二和区域四中的数转换为正数,此时需要用到>>>运算符。
我们用10101001举例:
首先,我们将其左移16位,变为10101001 00000000 00000000
然后将其右移8位,变为00000000 10101001 00000000 00000000
此时,该区域的数变为原数据中该区域的大小(正数)。