位运算

位运算详解与应用
本文详细介绍了位运算符包括与(&)、或(|)、取反(~)、异或(^)的基本概念及其应用场景,特别是异或在哈希算法中的作用,并通过示例展示了如何解析负数的二进制表示。

位运算:

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

  

转载于:https://www.cnblogs.com/liwenzhen238/p/8674522.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值