位运算

位运算:

&  与   //任何值和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);
	}
}

  

posted on 2018-03-30 09:47  乱世浪子  阅读(112)  评论(0编辑  收藏  举报