自学java第十七天
位运算符: 位运算是以二进制位为单位进行的运算,其操作数和运算结果都是整型值。 位与'&',位或'|',位非'~',位异或'^',右移'>>',左移'<<',0填充的右移'>>>' 位运算的位与'&',位或'|',位非'~',位异或'^'与逻辑运算的相应操作的真值表完全相同,其差别只是位运算操作的操作数和运算结果都是二进制整数,而逻辑运算相应操作的操作数和运算结果都是逻辑值boolean型。
下边为位&运算: int a = 15; //x等于二进制数的00001111 int b = 6; //y等于二进制数的00000110 int c = x&y //z等于二进制数的00000110
结果为:二进制数的00000110
右移是将一个二进制数按指定移动的位数向右移位,移掉的被丢弃,左边移进的部分或者补0(当该数为正时),或者补1(当该数为负时)。这是因为整数在机器内部采用补码表示法,正数的符号位为0,负数的符号位为1。
将一个数左移"<<"会使该值乘以2的幂。 将一个数右移>>"会使该值除以2的幂。 右移(补零)运算符,即无符号右移,">>>"永远不会产生负号,因为其符号位总是被补零。 不论被移动数是正数还是负数,左边移进的部分一律补0。
-
System.out.println(1<<3);
-
System.out.println(8>>3);
输出为:8
1
int x = 70; //x等于二进制数的01000110 int y = 2; int z = x>>y //z等于二进制数的00010001 即运算结果为z等于二进制数00010001,即z等于十进制数17。
int x = -70; //x等于二进制数的11000110 int y = 2; int z = x>>y //z等于二进制数的11101110 即运算结果为z等于二进制数11101110,即z等于十进制数-18。 右移和左移操作,是整数机器数的补码表示法。
&运算符规定必须信号A和B都被充电,其结果才是充电。(1表示充电,0表示未充电)
|运算符规定只要信号A或B被充电,输出结果就是充电。
^异或(XOR)运算符规定如果信号A或B之一被充电,但是信号A和B不是同时被充电,则结果为充电。
~运算符也称为按位求补,它翻转所有的充电状态值。

浙公网安备 33010602011771号