ICS Return 1 when x contains an odd number of 1s,0 otherwise(判断二进制表示中1的个数是否为奇数)
本题棘手的地方在于不能用循环语句,并且最多只能包含12个算术运算、位运算和逻辑运算。思路找了非常久,用了从一般到特殊,才慢慢发现规律。首先来看只用两个bit的情况,未知数x共有四种(00,01,10,11),若要判断1的个数奇偶,不难发现只需用最高位异或最低位就可实现,即 x^(x>>1),如果结果为1,那么有奇数个,否则有偶数个。从中不难看出对于32位的x,若
原创
2017-09-16 10:48:57 ·
2501 阅读 ·
1 评论