下文笔者将讲述java中位运算符,如下所示:
其功能:对运算的两个数字,按位相与
两个位都相同时,则此位为1
两位不同时,则此位为0
例:
其功能:对运算的两个数字,按位相或
两个位中有一个位上的为1,则运算结果为1
否则为0
例
其功能:对运算的两个数字,按位异或
两个位中的值相同时,则返回0
否则为1
例
求反运算符的功能:对计算数按位依次求反(此位上1变0,0变1,符号位也会求反)
左移运算符的功能把“<<”:将左边的运算数全部向左移动指定位数,空出的位数补零,高位扔掉
如:
其功能是把“>>”:将左边的运算数的各二进位全部右移若干位
“>>”右边的数指定移动的位数
位运算符用于对整型类型( long,int,short,char,and byte )进行相关位运算操作,如下所示: ------------------------------------------- &:按位与,“只有两个都是1,结果才是1” |:按位或,“只要有一个1,结果就是1” ^:按位异或,“相同的为0,不同的为1”(通常被称之为 无进位相加) ~:按位取反,“1就是0,0就是1” <<:按位左移,“表示将二进制向左位移,右边填0” >>:按位右移,“表示将二进制向右位移,左边填符号位” >>>:无符号右移动,“表示将二进制向右位移,左边填0”
按位与运算
按位与运算符"&"是双目运算符其功能:对运算的两个数字,按位相与
两个位都相同时,则此位为1
两位不同时,则此位为0
例:
int a = 0b1011; int b = 0b1010; int c = a & b;//1010 System.out.println("c is " + c); ----运行以上代码,将输出以下信息--- c is 10
按位或运算
按位或运算符“|”是双目运算符其功能:对运算的两个数字,按位相或
两个位中有一个位上的为1,则运算结果为1
否则为0
例
int a = 0b1011; int b = 0b1010; int c = a & b;//1011(11) System.out.println("c is " + c); ----运行以上代码,将输出以下信息--- c is 11
按位异或运算
按位异或运算符“^”是双目运算符其功能:对运算的两个数字,按位异或
两个位中的值相同时,则返回0
否则为1
例
int a = 0b1011; int b = 0b1010; int c = a ^ b;//0001(1) System.out.println("c is " + c); ----运行以上代码,将输出以下信息--- c is 1
求反运算
求反运算符"~"是一个单目运算符,具有右结合性求反运算符的功能:对计算数按位依次求反(此位上1变0,0变1,符号位也会求反)
左移运算
左移运算符“<<”是双目运算符左移运算符的功能把“<<”:将左边的运算数全部向左移动指定位数,空出的位数补零,高位扔掉
如:
int a = 0b0011;// 3 int c = a << 3;// 11000(24) System.out.println("c is " + c); -----运行以上代码--- c is 24
右移运算
右移运算符“>>”是双目运算符其功能是把“>>”:将左边的运算数的各二进位全部右移若干位
“>>”右边的数指定移动的位数
int a = 0b0011;// 3 int c = a >> 1;// 0001(1) System.out.println("c is " + c); -----运行以上代码--- c is 1
位运算注意事项: 1.移位运算符适用类型有byte、short、char、int、long 2.对低于int型的操作数将先自动转换为int型再移位 3.对于int型整数移位a>>b,系统先将b对32取模,得到的结果才是真正移位的位数,因为超过32位的移动毫无意义 4.对于long型整数移位时a>>b,则是先将移位位数b对64取模 5.x>>1的结果和x/2的结果是一样的(n除以2,可以使用n>>1),x<<2和x*4的结果也是一样的,即:一个数左移n位,效果等同于这个数乘以2的n次方,一个数右移n位,就是等于这个数除以2的n次方
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。