如何将一个二进制值的指定位设置为指定的值
如何将一个二进制值的指定位设置为指定的值

如何将一串二进制的制定位设置为指定的值。假如有一串二进制值 1010 ,要将第二位设置为 0

异或 ^

首先需要了解异或 ^ 运算符的概念和性质。和 0 异或等于它本身,相同的值异或等于 1。另外一个值得注意的是,一个数和同一个值异或两次等于它本身。

公式

公式:x = ((x&(1 << n)) ^ x) ^ (a << n)x 为原值,n 为第 n 个值,a 为想要设置的值(0或1)。

首先 (x&(1 << n)) 的值为:保留第 n 位原来的值,其他位置零。再将此值与原值 x 异或,得到一个值:除了第 n 个值为零,其他位置为原值。(这是因为,与 0 异或的那一位为原值,与相同值异或的那一位为 0)。然后此时,再与 (a << n) 异或,将第 n 位设置为 a (这是因为与 0 异或为其本身)。

过程

1、原值:               1 0 | 1 | 0    x
2、其他位为0:          0 0 | 1 | 0    x & ( 1 << n )
3、待设置的值           0 0 | 0 | 0    a << n
4、将 12 异或得到: 1 0 | 0 | 0     x & ( 1 << n ) ^ x
5、将 3 和 4 异或得到: 1 0 | 0 | 0     ((x&(1 << n)) ^ x) ^ (a << n)

最后修改于 2022-11-07

此篇文章的评论功能已经停用。