位运算

什么是位运算?

位运算是计算机中进行二进制操作的一种方法。

它可以对二进制数的单个比特位进行操作,包括位移、按位与、按位或、按位异或、按位取反等。

位运算可以用于很多场景,例如:

  1. 对于需要对程序中的某一或几位进行操作时,比如需要将一个数的某一位设为1或者设为0,这时就可以使用按位运算。

  2. 在内存管理中,程序常常需要对内存地址进行位运算,以判断对齐、分页和分段等问题。
  3. 位运算还可以用于加密和解密算法中,提高运算效率并增加加密强度。

  4. 位运算可以进行逻辑推理,例如二进制数的“灰码编码”等,常用于工业自动化和数字信号处理领域等。

总之,位运算可以广泛应用于计算机领域的各个方面,特别是在处理二进制数据和优化性能时非常有用。常见的语言,比如 Python、C、Java 等都提供了丰富的位运算符,可以方便地进行位运算操作。

位运算有哪些?

按位与——“&”

按位与运算是一种位运算,通常用符号“&”表示。按位与的原理是对两个二进制数的每一位进行与运算,相同位上的数值进行与运算,的结果都是1,则结果位1,否则为0。具体来说,按位与操作的运算规则如下:

  1. 首先将两个二进制对其,使它们的位数相同。如果一个二进制数比另一个二进制数短,则在它左侧填充零直到位数相等。
  2. 对于每一位,进行按位与运算。按位与运算规则是:如果两位数字对应位都为1,则该位结果为1,否则为0。
  3. 将位运算结果组成一个新的二进制数,该二进制数就是原始两个二进制数的按位与结果。

举个🌰(例子)假设我们要计算两个二进制数的按位与结果(二进制数用空格分开以方便表示):

  1101 1010
& 1011 0011

首先,我们将它们对齐:

  1101 1010
& 1011 0011
-----------

然后,对每一位进行按位与运算,得到一下结果:

  1 1 0 1   1 0 1 0
& 1 0 1 1   0 0 1 1
-------------------
  1 0 0 1   0 0 1 0

因此,按位与运算的结果使 1001 0010,它的十进制十 146。

按位或——“|”

按位或运算也成为按位或,其符号通常为“|”,是一种常用的位运算。按位或的原理是对二进制的每一位进行或运算,如果相同位上的数值有一个为1,则两个按位或运算后的结果在此位上为1,否则为0。按位或的运算规则如下:

  1. 首先将两个二进制对其,使它们的位数相同。如果一个二进制数比另一个二进制数短,则在它左侧填充零直到位数相等。
  2. 对于每一位,进行按位或运算。按位与运算规则是 :对于两个二进制数的同一位,如果相同位上的数值有一个为1,则改为结果为1,否则为0。
  3. 将位运算结果组成一个新的二进制数,该二进制数就是原始两个二进制数的按位与结果。

举个🌰(例子)假设我们要计算两个二进制数的按位或结果(二进制数用空格分开以方便表示):

  1101 1010
& 1011 0011

首先,我们将它们对齐:

  1101 1010
& 1011 0011
-----------

然后,对每一位进行按位或运算,得到一下结果:

  1 1 0 1   1 0 1 0
& 1 0 1 1   0 0 1 1
-------------------
  1 1 1 1   1 0 1 1

因此,按位或运算的结果使 1111 10111,它的十进制十 251。

按位异或——“^”

按位异或运算符的符号通常为“^”,它也是一种位运算。按位异或的原理是:如果相同位上的数值不同时,则运算结果在此位上为1,否则为0。按位异或的运算规则如下:

  1. 首先将两个二进制对其,使它们的位数相同。如果一个二进制数比另一个二进制数短,则在它左侧填充零直到位数相等。
  2. 对于每一位,进行按位或运算。按位与运算规则是 :如果相同位上的数值不同时,则运算结果在此位上为1,否则为0。
  3. 将位运算结果组成一个新的二进制数,该二进制数就是原始两个二进制数的按位与结果。

举个🌰(例子)假设我们要计算两个二进制数的按位异或结果(二进制数用空格分开以方便表示):

  1101 1010
& 1011 0011

首先,我们将它们对齐:

  1101 1010
& 1011 0011
-----------

然后,对每一位进行按位异或运算,得到一下结果:

  1 1 0 1   1 0 1 0
& 1 0 1 1   0 0 1 1
-------------------
  0 1 1 0   1 0 0 1

因此,按位异或运算的结果使 0110 1001,它的十进制十 105。

按位取反——“~”

按位异或运算符的符号通常为“~”,它也是一种位运算。按位异或的原理是:如果相同位上的数值不同时,则运算结果在此位上为1,否则为0。按位异或的运算规则如下:

  1. 首先将两个二进制对其,使它们的位数相同。如果一个二进制数比另一个二进制数短,则在它左侧填充零直到位数相等。
  2. 对于每一位,进行按位或运算。按位与运算规则是 :如果相同位上的数值不同时,则运算结果在此位上为1,否则为0。
  3. 将位运算结果组成一个新的二进制数,该二进制数就是原始两个二进制数的按位与结果。

举个🌰(例子)假设我们要计算两个二进制数的按位异或结果(二进制数用空格分开以方便表示):

  1101 1010
& 1011 0011

首先,我们将它们对齐:

  1101 1010
& 1011 0011
-----------

然后,对每一位进行按位异或运算,得到一下结果:

  1 1 0 1   1 0 1 0
& 1 0 1 1   0 0 1 1
-------------------
  0 1 1 0   1 0 0 1

因此,按位异或运算的结果使 1111 10111,它的十进制十 89。

按位左位移——“<<”

按位右位移——“>>”

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值