Java:常用位运算

前言补充

1、位运算用于对二进制数进行操作(一般是对整数的二进制补码进行操纵)。
2、正数的原码、反码、补码都是十进制数直接转换为二进制的形式,而负数则不同。
3、负数的原码是十进制数直接转化为二进制数,但最高位为1,代表符号数(1为负数,0为正数)。负数反码为除了符号数意外其他位数字取反(即1变为0,0变为1)。负数补码 = 反码+1。

一、Java常见运算符

在这里插入图片描述

二、运算符详解

1、~ 按位非运算(NOT):按位取反
例:
52的二进制数为0011 0100(按八位举例,下同)

~0011 0100
 1100 1011

即~52=75

2、& 按位与运算(AND): 运算的数同时为1结果为1,其他情况结果为0
例:
52&13

 0011 0100
&0000 1101
------------
 0000 0100

即52&13=4

3、| 按位或运算(OR):运算的数只要有一个为1,其结果为1
例:
52|13

 0011 0100
|0000 1101
------------
 0011 1101

即52|13=61

4、^ 按位异或运算 (XOR):运算的数要是不相同就返回1,相同返回0

52^13

 0011 0100
^0000 1101
------------
 0011 1001

即52^13=57

5、<< 左移,低位补零
例:
52<<2(52左移两位)

 0011 0100<<2
------------
 1101 0000

即52<<2=208

6、>> 右移,高位补和第一位相同的数字
例6-1:
52>>2

 0011 0100>>2
------------
 0000 1101

即52>>2=13
例6-2:
-52>>2

-52原码: 1011 0100
-52反码: 1100 1011
-52补码: 1100 1100
-52>>2   1100 1100>>2
-----------------------
		 1111 0011

即-52>>2=-13

7、>>> 无符号右移,高位补零
例:
52>>>2

 0011 0100>>>2
------------
 0000 1101

即52>>>2=13

详解总结

1、<< 1 相当于乘以2

2、>> 1 相当于除以2

3、>>> 不考虑高位的正负号,正数的 >>> 等同于 >>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值