设置 unsigned int 的第 n 位
Setting nth bit of unsigned int
给定一个 unsigned int x,我想将第 n 位设置为 y,y 可以是 0 或 1。是否可以使用按位运算符创建一个表达式来做到这一点,同时避免使用任何条件声明?谢谢。
x ^= (-y ^ x) & (1 << n);
x = (x & (~(1 << n))) | (y << n)
很简单。 (首先,清除第 n
位,如果 y
为 1
,则将第 n
位设置为 1
。)
给定一个 unsigned int x,我想将第 n 位设置为 y,y 可以是 0 或 1。是否可以使用按位运算符创建一个表达式来做到这一点,同时避免使用任何条件声明?谢谢。
x ^= (-y ^ x) & (1 << n);
x = (x & (~(1 << n))) | (y << n)
很简单。 (首先,清除第 n
位,如果 y
为 1
,则将第 n
位设置为 1
。)