使用给定的十进制值在n位数上设置适当的位

时间:2016-11-30 13:24:56

标签: c embedded

假设我有0b000的数字,我需要设置正确的位,这样它们对于ex来说是相等的。 5.(0b101)。 我如何使用按位运算算法?

好的,那么更多细节。我正在开发莫尔斯码解码器,并描述输入,我使用8位: 000 00000 ,其中前三位是t 点/短划线的数量给定,其余位保留给输入,其中dot为0,短划线为1。 例如,字母A(.-)将为: 010 01000

问题是,如何修改前三位,以便它们显示在输入期间给出了多少点/短划线?

2 个答案:

答案 0 :(得分:1)

使用|打开位。让我们坚持使用二进制文字的非标准表示法(注意C ++ 14以上版本支持它):

0b000 | 0b1000b100

0b100 | 0b0010b101

请注意,您可以使用^ 切换位(通过一些示例作为练习)。

最后,您可以使用'& ~`来切换 off 位。

答案 1 :(得分:-2)

解决了,如果要设置前3位,则向左移5位(其中value是要在3个第一位上设置的数字):

value = value << 5;

然后将其与其余位进行OR运算:

morseBits = morseBits | value;