0

所以我有一个词,我想循环并测试最左边的位。我有我的话,我将它传递给我的子程序,我知道如何建立一个循环,我只是不确定如何测试单词中最左边的位。

谢谢你的帮助

4

2 回答 2

0

不确定它是否适用于您的特定任务,但一种简单的方法可能是对单词执行逻辑/算术左移。这只是通过将单词添加到自身来完成(等于乘以 2,从而将所有位向左移 1 个“点)。完成此操作后,将设置条件代码(假设您使用的是 GPR ) 并且您可以通过检查移位的字是正或零(因此最左边的位是 0)还是负(因此最左边的位是 1)来测试最左边的位是 1 还是 0。按照这种方法循环整个单词,您将能够确定单词中每个位的值。希望这会有所帮助。

于 2014-12-16T00:04:13.077 回答
0

最好的方法是使用位掩码——在您要检查的单词和在您希望测试的任何位置带有 1 的位掩码之间执行按位与。即二进制:

my word:   11
bitmask:   10
         & ==
           10

您可以看到左侧的 1 丢失了。所以要对 16 位数字做类似的事情:

0x0230 & 0x8000 = 0x0000
0xC020 & 0x8000 = 0x8000 != 0x0000

这里要注意的重要一点是,如果该位不存在,则 AND 返回 0,如果该位存在,则返回其他内容。它是什么并不重要,只是它不是零。

于 2014-12-11T03:55:29.403 回答