我正在尝试在汇编中编写一个函数,该函数将检测较长的二进制数是否包含较小的二进制模式。
示例:100111
是否包含1001?
当我读到这个问题时,我想我会在每次循环中右移(逻辑)时对大数字及其较小的模式进行按位与运算。
所以,在我的脑海里,我认为它会这样做:
100111 AND 1001 = 0
Shift-right 1
010011 AND 1001 = 0
Shift-right 1
001001 AND 1001 = 1 // Pattern FOUND!
并重复此操作,直到数字移动到零或 AND 返回 1。
但是,我想我一定有些困惑,因为在循环的第一次运行中,对于我放入的大多数内容,这将返回 1。我对 AND 的用法感到困惑吗?