关于不同位移却可以得到同样余数的“特殊”被除数
(注:那个网站垃圾,不能正常回复,所以就写在这了)
解答:
这是由于你给的书456是个相对有点特殊的数(其实任意给一个除数,比如64,都有自己对应的特殊的数,这点后面再说)
因为456的二进制是111001000
注意,第5位和第6位,都是0,而左边开始算第一个1,是第四位的1。
而余数得到的8,实际就是01000。
此处,先将其除于32,默认应该是右移5位,由111001000变成了1110,由于此时的第六位也是0,所以,此处继续多左移一位,然后再右移对应位数,对我们所要得到的结果,是没影响的。
同理,左移4位,同样可以,只是在这个例子中,一定要保持余数是对的,即可。
而如果只是左移三位,再右移回来,之所以不可以,是因为右移三位,没有将从左边数第一个1,也就是第4位的1消除掉,也就无法得到我们此处所要的余数了。
看清了这点,就可以很容易的反推了,
如果这不是111001000,而是111000100,那么除了右移后左移4,5,6位可以,右移后左移3位也可以,因为右移三位就可以消除这个余数100,也就是4了。
这下,应该知道我开始说的,为何对于对应的除数,有很多特殊的被除数了,那是因为只要保证被除数对于的余数的最高位有0,都可以找到这类“特殊”的数的。
转载请注明:在路上 » 关于不同位移却可以得到同样余数的“特殊”被除数