位运算
LanyuanXiaoyao's Blog ヽ(✿゚▽゚)ノ

位运算

2017-03-26

简介

我们都知道计算机里的数据实际上是通过二进制进行储存的,所以我们在计算机上的所有操作其实都是在操作这些二进制数据
位运算,意思就是在实际编程中对把数据当做二进制数进行运算操作,因为计算机实际上也是把数据转化为二进制数进行运算,所以我们直接使用二进制的运算方式计算的效率就会很高
试想如果是十进制运算的话,计算机还要先把十进制运算转化为二进制运算才开始计算,而我们直接使用二进制运算就跳过了中间”编译”的过程,这也是为什么我们说位运算的效率高.

种类

在Java里位运算共有7种,如下表

名称 Java
按位与 a & b
按位或 a | b
按位异或 a ^ b
按位取反 ~a
左移 a << b
带符号右移 a >> b
无符号右移 a >>> b

下面将会对这7种运算进行介绍

& 按位与运算

顾名思义就是把参与运算的数据按照二进制位,逐位进行逻辑与运算
运算规则如下

a b 结果
0 0 0
0 1 0
1 0 0
1 1 1

即两数同时为结果才为,其他情况只要有一个为,结果就为
举例

  • 正数 对于正数直接使用其原码进行运算即可
    例如47进行按位与运算
    4=0000 0000 0000 0100 &7 =0000 0000 0000 0111= 0000 0000 0000 0100
    
  • 负数 对于负数需要使用使用其补码来进行运算 例如-47进行按位与运算
    -4=1111 1111 1111 1100 &7 =0000 0000 0000 0111= 0000 0000 0000 0100
    

| 按位或运算

顾名思义就是把参与运算的数据按照二进制位,逐位进行逻辑与运算
运算规则如下

a b 结果
0 0 0
0 1 1
1 0 1
1 1 1

即两数同时为的时候,结果才为,只要两数有一个是的,那么结果就是


相似文章

评论