易百教程

34、如何在C语言中设置、清除、切换和检查单个位?

设置第 N 位
设置第 N 位意味着如果第 N 位为 0,则将其设置为 1,如果为 1,则保持不变。 在 C 中,按位或运算符 (|) 用于设置整数数据类型的位。 据我们所知| (按位或运算符)计算一个新的整数值,其中每个位的位置只有当操作数(整数类型)在该位置为 1 时才为 1。
简而言之,如果其中任何一位为 1,则可以说两位的“按位或”始终为 1。


0 | 0 = 0
1 | 0 = 1
0 | 1 = 1
1 | 1 = 1

设置位的算法:

Number | = (1UL << nth Position);

清除位
清位意味着如果第 N 位为 1,则将其清为 0,如果为 0,则保持不变。 按位与运算符 (&) 用于清除位整数数据类型。 如果其中任何一位为零,则两位的“与”始终为零。

0 & 0 = 0
1 & 0 = 0
0 & 1 = 0

清除位的算法:
要清除第 n 位,首先,需要反转位串,然后将其与数字相加。

Number  &=  ~(1UL << nth Position);

检查位
要检查第 n 位,请将第 n 个“1”位置向左移动,然后将其与数字“与”。
检查位的算法如下:

Bit = Number & (1UL << nth)

切换位
切换位表示如果第 N 位为 1,则将其更改为 0,如果为 0,则将其更改为 1。按位异或 (^) 运算符用于切换整数数据类型的位。 要切换第 n 个位移位,请将第 n 个位置的“1”向左移动并“异或”它。

0 ^ 0 = 0
1 ^ 0 = 1
0 ^ 1 = 1
1 ^ 1 = 0

切换位的算法:

Number  ^=  (1UL << nth Position);