• 1.摘要
  • 2.基本信息
  • 3.运算符号
  • 4.运算说明
  • 4.1.and运算amp
  • 4.2.or运算
  • 4.3.xor运算
  • 4.4.not运算
  • 4.5.shl运算ltlt
  • 4.6.shr运算gtgt
  • 5.优先级
  • 6.简单应用
  • 7.储存
  • 8.进阶介绍
  • 8.1.奇偶性
  • 8.2.个数计算
  • 8.3.查找
  • 8.4.逆序
  • 8.5.实战

位运算

程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)。

110

AND 1011

---------------

0010 --> 2

基本信息

  • 中文名

    位运算

  • 外文名

    bitwise operation

  • 方法

    对整数进行操作

  • 用途

    优化程序

运算符号

下面的a和b都是整数类型,则:

含义

Pascal语言

C语言

Java

按位与

a and b

a & b

a & b

按位或

a or b

a | b

a | b

按位异或

a xor b

a ^ b

a ^ b

按位取反

not a

~a

~a

左移

a shl b

a << b

a << b

运算说明

and运算amp

and运算通常用于二进制的取位操作,例如一个数 and 1的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数。

相同位的两个数字都为1,则为1;若有一个不为1,则为0。

00101

11100

(&;或者and)

----------------

00100

or运算

or运算通常用于二进制特定位上的无条件赋值,例如一个数or 1的结果就是把二进制最末位强行变成1。如果需要把二进制最末位变成0,对这个数or 1之后再减一就可以了,其实际意义就是把这个数强行变成最接近的偶数。

相同位只要一个为1即为1。

00101

11100

(|或者or)

----------------