【发布时间】:2013-10-14 17:22:39
【问题描述】:
有没有办法根据位的位置来选择一个值。问题陈述是:- 对于 16 位的位置,我可以设置任何位,比如我设置了 1、4、6、7、11、13 位 所以掩码是:-
Bit Positons 0 0 1 0 1 0 0 0 1 1 0 1 0 0 1 0
现在我需要根据这个位掩码随机选择一个值,其中只设置了 1 位,所以我可能的值可能是:-
用于选择 4 :0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
For Selecting 7: 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
但是我需要随机选择这个值,所以我想这样做
1)根据位掩码创建一个数组,因此对于 16 位,该数组将有 16 个唯一值。
2) 现在对数组位置做rand运算,得到数组索引。
3) 使用该数组索引处的值。
有没有更好的方法?
【问题讨论】:
-
当你随机选择一个值时,结果应该是一个恰好位设置的值,还是最多一个位设置的值?
-
只设置了 1 位,也设置在位掩码中
标签: c arrays random bit-manipulation bitwise-operators