所以我有一个词,我想循环并测试最左边的位。我接受了我的话,我将它传递给我的子程序,我知道如何构建一个循环,我只是不确定如何测试单词中最左边的位。
感谢您的帮助
答案 0 :(得分:0)
执行此操作的最佳方法是使用位屏蔽 - 在要检查的字之间执行按位AND,并在要测试的任何位置执行1位掩码。即二进制:
my word: 11
bitmask: 10
& ==
10
你可以看到左侧的1号掉出来了。所以在16位数字上做类似的事情:
0x0230 & 0x8000 = 0x0000
0xC020 & 0x8000 = 0x8000 != 0x0000
这里需要注意的重要一点是,如果该位不存在,则AND返回0,如果该位存在,则返回其他内容。无论它是什么,只是它不是零。
答案 1 :(得分:0)
不确定它是否适用于您的特定任务,但一个简单的方法可能是对该单词执行逻辑/算术左移。这可以通过将单词添加到自身(相当于乘以2,从而将所有位移到左侧1“点)来完成。执行此操作后,将设置条件代码(假设您正在使用GPR)并且您可以通过检查移位的字是正数还是零(因此最左边的位是0)或负数(因此最左边的位是1)来测试最左边的位是1还是0。按照这种方法循环整个单词,你将能够确定单词中每个位的值。希望这会有所帮助。