java基础之位运算符
来源:互联网 发布:王鹏博士 杨浦云计算 编辑:程序博客网 时间:2024/06/05 05:05
java中具体的位运算符如下:
运算符
说明
<<
左移位,在低位处补0
>>
右移位,若为正数则高位补0,若为负数则高位补1
>>>
无符号右移位,无论正负都在高位补0
&
与(AND),对两个整型操作数中对应位执行布尔代数,两个位都为1时输出1,否则0。
|
或(OR),对两个整型操作数中对应位执行布尔代数,两个位都为0时输出0,否则1。
~
非(NOT),一元运算符。
^
异或(XOR),对两个整型操作数中对应位执行布尔代数,两个位相等0,不等1。
<<=
左移位赋值。
>>=
右移位赋值。
>>>=
无符号右移位赋值。
&=
按位与赋值。
|=
按位或赋值。
^=
按位异或赋值。
左移(<<)
程序代码:
public static void main(String[] args) { System.out.println(3<<2);}
输出结果:
12
计算过程:
3转换成二进制在内存中的表示方法为:
开始左移(在低位处补0):
结果:
右移(>>)
程序代码:
public static void main(String[] args) { System.out.println(6>>2);}
输出结果:
1
计算过程:
6转换成二进制在内存中的表示方法为:
开始右移(在高位处补0):
结果:
无符号右移(>>>)
程序代码:
public static void main(String[] args) { System.out.println(8>>>2);}
输出结果:
2
计算过程省略(参照上面的右移,只不过无论正负都在最高位补0)
位与(&)
程序代码:
public static void main(String[] args) { System.out.println(7 & 5);}
输出结果:
5
计算过程:
7的二进制表示形式:111
5的二进制表示形式:101
即:
111
&101
0表示false,1表示true
所得结果为:101
位或(|)
程序代码:
public static void main(String[] args) { System.out.println(7 & 5);}
输出结果:
7
计算过程:
7的二进制表示形式:111
5的二进制表示形式:101
即:
111
&101
0表示false,1表示true
所得结果为:111
异或(^)
程序代码:
public static void main(String[] args) { System.out.println(7 ^ 5);}
输出结果:
2
计算过程:
7的二进制表示形式:111
5的二进制表示形式:101
即:
111
&101
0表示false,1表示true;两边相同则为false,两边不同则为true
所得结果为:010
反码(~)
反码其实就是取反。
程序代码:
public static void main(String[] args) { System.out.println(~6);}
输出结果:
-7
6的二进制表示:
0000 0000 0000 0000 0000 0000 0000 0110
取反:
1111 1111 1111 1111 1111 1111 1111 1001
我们知道负数的二进制表示是正数的二进制取反加1,所以我们知道-6的变现形式减1,就得到了取反的效果。
即:-6-1=-7
总结
使用异或(^)可以实现简单的加密。
一个数异或同一个两次得到的还是原来的那个数。
程序代码:
public static void main(String[] args) { System.out.println(7^5^5);}
输出结果:
7
最有效率的方式算出2乘以8等于几?
程序代码:
public static void main(String[] args) { System.out.println(2<<3);}
两个整数变量值互换(不需要中间变量)
程序代码:
public static void main(String[] args) { int m = 5; int n = 7; n = n ^ m; m = n ^ m; n = n ^ m; // n ^ (n ^ m) System.out.println(m+"===="+n);}
- java基础之,位运算符>>
- java基础之位运算符
- java基础之位运算符
- Java基础之位运算符
- java之位运算基础
- Java基础应用之运算符(位运算加密)
- java基础 位运算符 >> <<
- java基础系列之二:位运算符
- Java基础重温之位运算符(左移右移)
- java 位运算基础
- Java基础: 位运算 << >> >>>
- Java基础 位运算
- java之位运算符
- 位运算符--Java基础013
- Java基础-位运算符回顾
- java基础_位运算符
- 24.java语言基础-位运算符
- Java基础——位运算符
- EPERM: operation not permitted, symlink '../../'
- 每段时间Android开发10个知道(初级系列)-170606
- 关于java中的锁的理解(通俗易懂)
- 厉害的vim设置:md
- Maven学习笔记之配置文件(settings.xml)
- java基础之位运算符
- MFC、WTL、WPF、wxWidgets、Qt、GTK、Cocoa、VCL 各有什么特点?
- RelativeLayout相对布局
- linux驱动程序设计
- 0-1背包问题(DP)
- 工作十年
- JAVA并发编程: CAS和AQS
- ZTE U880 使能Adb for Linux
- 增强自信心的十大经典法则