标签: bitwise-operators
给定一个unsigned int x,我想将第n位设置为y,y可以是0或1.是否可以使用按位运算符创建表达式来执行此操作,同时避免使用任何条件语句?感谢。
答案 0 :(得分:4)
x = (x & (~(1 << n))) | (y << n)
非常简单。 (首先,清除n位,如果n为1,则将y位设为1。)
n
1
y
答案 1 :(得分:1)
x ^= (-y ^ x) & (1 << n);