以下问题都是通过位运算的方式解决:
Q1:a&(a-1)表达式有什么作用?
A1:a-1会将a的最低位的1变为0,后几位全变为1,之后与a进行&位运算,可以看做将a的最低位1变为0。
Q2:如何判断一个整型数的二级制数中1的位数?
A2:a = a&(a-1),直到a = 0。中间记录次数。
Q3:如何判断一个整型数a是2的正整数次幂?
A3:参考Q2。其二级制数为1的位数等于1。
Q4:如何将一个整型数a对2^n求余?
A4:a&(2^n-1)
以下问题都是通过位运算的方式解决:
Q1:a&(a-1)表达式有什么作用?
A1:a-1会将a的最低位的1变为0,后几位全变为1,之后与a进行&位运算,可以看做将a的最低位1变为0。
Q2:如何判断一个整型数的二级制数中1的位数?
A2:a = a&(a-1),直到a = 0。中间记录次数。
Q3:如何判断一个整型数a是2的正整数次幂?
A3:参考Q2。其二级制数为1的位数等于1。
Q4:如何将一个整型数a对2^n求余?
A4:a&(2^n-1)