本文共 719 字,大约阅读时间需要 2 分钟。
在Objective-C中,使用位运算可以高效地统计整数中设置位(即二进制表示中为1的位)的数量。以下是一个实现这个功能的完整类,展示了如何通过位操作实现这一目标。
#import@interface BitCounter : NSObject- (NSInteger)countSetBits:(NSInteger)number;
- (NSInteger)countSetBits:(NSInteger)number { // 初始化计数器为0 NSInteger count = 0; // 遍历每一位,检查是否为1 while (number != 0) { // 如果当前位为1,计数器加1 if (number & 1) { count++; } // 移动到下一位 number >>= 1; } return count;} count,用于记录设置位的数量,初始值为0。while循环遍历整数的每一位,直到number变为0。number & 1检查当前位是否为1。如果是,增加计数器。number >>= 1移至下一位,逐步检查每一位。这种方法的时间复杂度为O(log n),其中n是输入整数的值。由于每次移位操作都会减少一个位数,直到处理完所有位,算法效率很高。
转载地址:http://mjnfk.baihongyu.com/