位运算:
& 与 //任何值和0与运算都为0
| 或 //任何值和-1或运算都为-1
~ 取反 //
^ 异或 //用于用户加密、哈希算法;
//其中哈希算法将高16位和低16位取异或,这样数据值就会尽量的50%出现1或者0,而如果用与、或等运算得到的值75%为0或者1了,
//所以哈希算法采用异或。大数据到处采用哈希算法及哈希运算等...
如何知道负数的值:
A:负数取反加一为对应的正数值。----取法加一正负数相互成立
1111 1110 取反为 0000 0001,再加1为0000 0010即 2,所以1111 1110 为 -2
B:从右往左数第一个出现的1,然后前面取反就行
1111 1110 第一个出现1的为第二个位,然后前面取反就为 0000 0010,所以1111 1110为-2
1111 1111 第一个出现1的为第一个位,然后前面取反就我 0000 0001,所以为 -1
&
************************************************
0000 1010 = 10
0000 0101 = 5
--------------------
0000 0000 = 0
0000 1011 = 10
0000 0101 = 5
--------------------
0000 1111 = 15
^
************************************************
0000 0100 = 4
0000 1010 = 10
---------------------
0000 1110 = 14
代码测试:
import org.junit.Test; public class TestConverter { @Test public void test2(){ System.out.println(5 & 10); System.out.println(5 | 10); System.out.println(-1 | 99999); System.out.println(0 & 99999); System.out.println("============="); System.out.println(~1); System.out.println(4 ^ 10); } }