二进制中第一位为符号位,1表示负数,0表示正数。
1、 <<左移运算符(左移没有带或不带符号之分)。
例如9 << 2,将9向左移两位,9的二进制是01001,左移两位,后面补0,结果为0100100,转换为十进制就是36。按照十进制来看,左移一位相当于原值乘二得到结果,这里左移两位,乘二的二次方,即4,得36。
2、 >>右移运算符,>>为带符号右移。
带符号右移(>>)时,第一位原来是什么就补什么,负数原来第一位是1,右移后补1,正数原来第一位是0,右移补0,带符号右移数字的符号不变。例如9 >> 2,9的二进制是01001,右移两位,前面补0,结果为00010,十进制为2。按十进制来看,右移一位相当于原值除二,这里用的是整型除法,只会有整数部分。9 / 2 = 4,4 / 2 = 2。-6 >> 1 = -3。
3、 >>>为不带符号右移。
不带符号右移(>>>)时,负数移动后,第一位前会补0,负数就会变成一个正数。计算-6 >>> 1,int类型为4字节,1字节8位,共32位,第1位为符号位,用补码表示,-6用十六进制表示为fffffffa,向右移1位,第一位补0,结果用十六进制表示为7ffffffd,十进制是2147483645,发生了比较大的变化。
Java中的运算符<<,>>,>>>(Java中没有<<<运算符)
最新推荐文章于 2024-07-29 14:22:26 发布