1、用表达式判断一个数是否2的N次方
2的N次方的数转为二进制都是1带N-1个0的形式,例如 1、10、100、1000.……
则可以进行 x& (x-1) 运算,若结果为0,则x是2的N次方。
2、表达式 (x&y)+ ((x^y) >>1)
位运算
当两个数字某位都是1的时候,x&y相当于求平均值;
当两个数字某位有且只有一个1的时候,x^y相当于相加,而>>1就是求平均值。
当然,两个数字某位都是0的平均值就是0了。
故而相加可以获得两个数字的平均值。
1、用表达式判断一个数是否2的N次方
2的N次方的数转为二进制都是1带N-1个0的形式,例如 1、10、100、1000.……
则可以进行 x& (x-1) 运算,若结果为0,则x是2的N次方。
2、表达式 (x&y)+ ((x^y) >>1)
位运算
当两个数字某位都是1的时候,x&y相当于求平均值;
当两个数字某位有且只有一个1的时候,x^y相当于相加,而>>1就是求平均值。
当然,两个数字某位都是0的平均值就是0了。
故而相加可以获得两个数字的平均值。