假设我有0b000的数字,我需要设置正确的位,这样它们对于ex来说是相等的。 5.(0b101)。 我如何使用按位运算算法?
好的,那么更多细节。我正在开发莫尔斯码解码器,并描述输入,我使用8位: 000 00000 ,其中前三位是t 点/短划线的数量给定,其余位保留给输入,其中dot为0,短划线为1。 例如,字母A(.-)将为: 010 01000 。
问题是,如何修改前三位,以便它们显示在输入期间给出了多少点/短划线?
答案 0 :(得分:1)
使用|
打开位。让我们坚持使用二进制文字的非标准表示法(注意C ++ 14以上版本支持它):
0b000 | 0b100
是0b100
。
0b100 | 0b001
是0b101
。
请注意,您可以使用^
切换位(通过一些示例作为练习)。
最后,您可以使用'& ~`来切换 off 位。
答案 1 :(得分:-2)
解决了,如果要设置前3位,则向左移5位(其中value是要在3个第一位上设置的数字):
value = value << 5;
然后将其与其余位进行OR运算:
morseBits = morseBits | value;