题目介绍:将m到n之间的所有的数相与,得到其结果
要点:最笨的方法是将所有的数真正的相与,这无疑耗时效率低下。通过分析可以发现,若两个数最高有效位长度不相等,则最终结果一定是
仅含n的最高有效位的值,eg. m = 0x1kkk, n = 0x1kkk kkkk,k代表0或1,最终m到n所有数相与的结果为0x10000 0000;若两个数最高有效
位长度相等,则从高位依次比较其相等的位,直到不相等为止,相等的位保留,不相等的位置为0,则为与之后的结果,eg. m = 0x1010 0100,
n = 0x1010 1111,则m到n之间的所有数相与之后的结果为0x1010 0000;
陷阱:
1. 注意到最高有效位初始化时不能为0,因为>=0 都是有效值。
2. 求匹配位长度之前,需要判断mbit是否为-1,否则之后的 i = mbit;语句会带来for循环中可能错误执行一次(本程序中已排除)。
3. 从最高有效位开始匹配,不仅仅针对1,eg. 1010与1011,有效位为三位。