位运算(java)

本文探讨了位运算在编程中的应用,特别是左移`<<`、右移`>>`和无符号右移`>>>`操作,以及按位与`&`、按位或`|`、按位异或`^`和按位取反`~`的用法。通过实例展示了这些位运算如何减少程序运行开销并优化算法。位移操作用于改变数值的二进制表示,而按位操作符则用于对二进制位进行逻辑组合,从而实现特定的功能。理解并熟练运用位运算能显著提升代码效率。
摘要由CSDN通过智能技术生成

位运算

位运算在我们一般编写程序时, 不是特别常见,但是巧妙的使用位运算可以大量减少运行开销,优化算法 , 如下 :

我们先看 << >> >>>这三个使用方法

// << >> 为有符号的移动,最高位1
int a = 1 << 4;   // 1 二进制 0001 -- 左移4位 1000
System.out.println("a:"+a);   //十进制为16

int b = -16 >> 4;   // a 二进制 1000 -- 右移4为 0001
System.out.println("b:"+b);   //十进制为1

//  >>> 为无符号右移,空缺位只用0 补
int c = 4 >>> 1;   // 4   0000 0100
int d = -4 >>> 1;  // -4  1111 1100
System.out.println("c:"+c);
System.out.println("d:"+d);

结果 :

d 的最高位因为是1 ,移位后补0 ,所以超出了 int 的最大值

接着是这四个 :  &  |  ^  ~ , 例 :如下

int a = 4,b = 6;  // a: 0000 0100  b: 0000 0110
//4&6 -- 0000 0100 -- 十进制:4
System.out.println(a & b);
//4|6 -- 0000 0110 -- 十进制:6
System.out.println(a | b);
//4^6 -- 0000 0010 -- 十进制:2
System.out.println(a ^ b);
//~4  -- 1111 1011 -- 十进制:-5
//~6  -- 1111 1001 -- 十进制:-7
System.out.println(~a);
System.out.println(~b);

结果 : 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值