java位移运算符
❶ java中 << 什么意思比如1<<30,谢谢哦~~
是位移运算服, <<左移运算,>>右移运算,还有不带符号的位移运算 >>>.
左移的运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
计算过程已1<<30为例,首先把1转为二进制数字0000 0000 0000 0000 0000 0000 0000 0001
然后将上面的二进制数字向左移动30位后面补0得到0010 0000 0000 0000 0000 0000 0000 0000
最后将得到的二进制数字转回对应类型的十进制
另外两种的运算规则为
>>运算规则:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1.
>>>运算规则:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同
❷ JAVA位运算怎么用的
Java 位运算 Java 位运算[转]一,Java 位运算1.表示方法:在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1。补码的表示需要满足如下要求。(l)正数的最高位为0,其余各位代表数值本身(二进制数)。(2)对于负数,通过对该数绝对值的补码按位取反,再对整个数加1。2.位运算符位运算表达式由操作数和位运算符组成,实现对整数类型的二进制数进行位运算。位运算符可以分为逻辑运算符(包括~、&、|和^)及移位运算符(包括>>、<<和>>>)。1)左移位运算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。2)“有符号”右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。3)Java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。这一运算符是C或C++没有的。
public class Test3 {
public static void main(String[] args)
{
int i=4;
System.out.println(~i);//-5 (i的二进制为0100
System.out.println(~i&i);//0
System.out.println(~i|i);//-1
System.out.println(i>>2);//1
System.out.println(i<<2);//16
System.out.println(i>>>2);//1
System.out.println(-i>>2);//-1
System.out.println(-i>>>2);//1073741823
}
}
❸ Java移位运算符问题
有符号右移会保留最高位的符号位,从次高位开始逐位右移填0;而无符号右移会将符号位一起右移,并将高位全部填0。
例:对于一个byte类型的数10010100来说,有符号右移2位变为10000101,而无符号右移2位变为00100101。前者仍然是一个负数,而后者变成了正数。
左移只有有符号的,没有无符号左移。
❹ java移位运算符>>>和>>的区别
“>> 右移,高位补符号位” 这里右移一位表示除2
“>>> 无符号右移,高位补0”; 与>>类似
“<< 左移” 左移一位表示乘2,二位就表示4,就是2的n次方