如何将一个二进制值的指定位设置为指定的值
如何将一个二进制值的指定位设置为指定的值
如何将一串二进制的制定位设置为指定的值。假如有一串二进制值 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、将 1 和 2 异或得到: 1 0 | 0 | 0 x & ( 1 << n ) ^ x
5、将 3 和 4 异或得到: 1 0 | 0 | 0 ((x&(1 << n)) ^ x) ^ (a << n)
最后修改于 2022-11-07
此篇文章的评论功能已经停用。