1.关于奇偶校验的方法中,如何快速的求取一个64-bit的数字的奇偶校验位。(如果1的位数为奇数,则奇偶校验位为1,如果1的位数为偶数,则奇偶校验位为0)
a.暴力枚举法采用一位一位进行计算,一位一位的移位,效率较低。
b.x = x & (x-1),每次将最低位的1进行失效,统计1的个数。
c.可以采用查表法,例如8位为一个单元,255的空间每个对应1的个数,按照单元统计1的个数。
2.调换64-bit数字的第i位和第j位
a. i位如果与j位相同,没必要进行替换,如果不同,替换的方法为( 1<<i | 1<<j ) ^ 原数字即可。
3.将一个64-bit数字的所有位进行逆序
a.不断的调用上面调换的方法。
b.采用查表法,以单元为单位。
4.不适用乘,除,模运算求取两个数的最大公约数(GCD)
a.可以利用减法模拟辗转相除法。
b.递归不断的缩小问题规模。
5.返回1至n之前的素数
a.建立1-n的表,然后利用某个数的倍数将表中不为素数的不断至为false,如果一个一个数字的判断是否是素数效率太低。
6.使用位操作完成两个无符号数字的乘法运算
a.二进制以为,利用位操作模拟加法操作。
7.利用加,减,乘,位操作完成除法的运算
a.总体思想采用减法,但是可以减去2^k,这样可以加快减法的速度。
时间: 2024-11-06 01:52:30