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

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

异或 ^

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

具体介绍请看 百度百科 异或

公式

公式: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 异或为其本身)。

过程

假如有一串二进制值 1010 ,要将第二位设置为 0

binary pic1

3条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注