Java 数值类型位运算

位运算

运行速度最快的一种运算方式

  • &:按位与
  • |:按位或
  • ~:按位非
  • ^:按位异或
  • <<:左位移运算符
  • " >> ":右位移运算符
  • " >>> ":无符号右移运算符

除 ~ 以 外 ,其余 均 为 二 元 运 算 符 。 操 作 数 只 能 为 整 型 和字 符 型 数 据

	按位与:
			10101
			01010		
	结果	00000

按位与:只有当比较的两位都是1时,值才是1


	按位或:
			10101
			01010		
	结果	11111

按位或:只有当比较的两位有一个是1时,值才是1


	按位非:
			~10101 = 01010

按位非:所有位取反(唯一的一位运算符)


	按位异或:
			10101		10101
			01010		11111
	结果	11111		01010

按位异或:只有当比较的两位有一个是1时,且另一个是0时,值才是1


	左移运算符:
			3 <<2(3为int型)
  		把3转换为二进制数字0011,
  		0011 << 2 = 1100 = 12

左移运算符:即将小数点右移两位,或者数左移两位,相当于乘以 22 = 4,即左移多少位,就相当于乘以2的多少次方


	右移运算符:
			12 >> 2(3为int型)
  		把12转换为二进制数字1100,
  		1100 >> 2 = 0011 = 3

右移运算符:即将小数点左移两位,或者数右移两位,相当于除以 22 = 4,即右左移多少位,就相当于乘以2的多少次方


		System.out.println(8 >>> 2);
		System.out.println(-8 >> 2);
		System.out.println(-8 >>> 2);

在这里插入图片描述

无符号右移,忽略符号位,空位都以0补齐,前两个都没有问题,但是第三个是个整数,因为 >>>
右移时,忽略符号为空位都以0补齐,所以以0补齐后,就是正数了,而之气的符号为1,就加入运算了,导致数特别大


位运算为什么速度最快

在计算即的内部,只有加法,其他的,比如剑法,乘法,除法,都是由加法演变过来的,所以在左计算之前,都要进行转变;如:

		int num = 100 * 100;
		int num2 = 100 >> 6 + 100 >> 5 + 100 >> 2;

上面的 num == num2;但是下面的运算要快一点,因为字面的是直接对100进行的位运算,即直接对该数的二进制进行计算,而第一个还需要先转化为加法的形式,然后转化为二进制,然后再进行为操作,所以一个是直接进行位运算,一个需要结果i转化再进行位运算
程序中的所有数在内存中都是以二进制的形式存储,位运算符就是直接对二进制数进行操作运算,所以速度很快

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值