【发布时间】:2015-04-06 06:56:36
【问题描述】:
给定一个无符号整数 x,我想将第 n 位设置为 y,并且 y 可以是 0 或 1。是否可以使用按位运算符创建表达式来执行此操作,同时避免使用任何条件语句?谢谢。
【问题讨论】:
-
请阅读How to ask。
给定一个无符号整数 x,我想将第 n 位设置为 y,并且 y 可以是 0 或 1。是否可以使用按位运算符创建表达式来执行此操作,同时避免使用任何条件语句?谢谢。
【问题讨论】:
x = (x & (~(1 << n))) | (y << n)
很简单。 (首先,清除nth 位,如果y 是1,则将nth 位设置为1。)
【讨论】:
x = (x | (1 << n)) & (y << n) - 此版本首先将 nth 位设置为 1。
x ^= (-y ^ x) & (1 << n);
【讨论】: