设置 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 位,如果 y1,则将第 n 位设置为 1。)