运算符归类:
一元运算符:逻辑运算符(!),非运算符(~)
二元运算符:复制运算符(=),逻辑与运算符(&&),逻辑或运算符(||),逐位与运算符(&),逐位或运算符(|),右移运算符(>>)
三元运算符:X?Y:Z;
逐位运算符
逐位运算符是一种比较复制的运算符。可以分为逐位逻辑运算符,逐位位移运算符两种。无论那种逐位运算符,都必须将操作数要求是整形的操作符,转换为 32 位的二进制数值。然后参与运算,运算完毕将结果转换成十进制数据.
1.逐位与运算符
逐位与运算符(&)是一个二元运输符,该运算符可以将左右两个操作数据逐位执行 And 的操作
即只有 2 个操作数据中的对应的位数都加 1 是,该结果中的的这一位才是 1,否则就是 0,如下代码:
int s=9&12; //结果是8
int s1=1&15; //结果是1
图解:在进行逐位与操作时,逐位与运算符会将 10 进制的数据转换成 2 进制的数据,在将 2 进制的数据转中的每一位数值逐位进行 and 操作,的出结果后将结果转换成 10 进制的数据。
2.逐位或运算符
逐位或运算符(|)和逐位与运算符类似,可以将左右两个操作符逐位都执行 OR 操作,两个操作中的相对位的只要有一个为 1 的时,该结果的这一位就是 1,其他就是 0。
3.逐位异或运算符
逐位异或运算符(^)和逐位与运算符类似,可以将左右 2 个操作数逐位执行异或运算,所谓异或操作是指,将第 1 个操作数和第 2 个操作数相对应的位上的 2 个数值异或,不同为 1,相同为 0。
4 逐位非运算符
逐位非运算符(~)是一元运算符,可以将操作数据中的所有位数中的数值取反,在 java 中对于一个带符号的整数进行逐位非运算符。相当于将该整数改变符号,然后在减 1。
5 左移运算符
左移运算符(<<)是一个二元运算符,可以将 1 个操作数据中的所有数值(一共 32 位),向左移动,移动的位数由第 2 个操作数决定,因此第 2 个操作数应该是 0~31 的整数,如果第 2 个操作数据大于 31,那么结果就是第一个数据
图解:是将一个值左移 1 位,相当于将该数值乘以 2;左移 2 位,相当于将该数值乘以 4。
6 带符号的右移运算符
带符号的右移运算符(>>) 是一个二元操作符,可以将第 1 个操作数据中的所有数值(一共 32 位)向右移动,移动的位数由第 2 个操作数据来决定,因此第 2 个操作数据应该是 0~31 的整数,如果第 2 个操作数据大于 31,那么结果就是第一个数据。
7 用 0 补足的右移运算符
用 0 补足的右移运算符(>>>)与带符号的左移运算符类似,只是在右移的时候,最左侧的数值都是用 0 来补充。
int s=12>>>1; //结果是6
int s1=-12>>>1; //结果是2147483642
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于