<OFFER15> 15_NumberOf1InBinary

1 // 面试题15:二进制中1的个数 2 // 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如 3 // 把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。 4 5 #include <cstdio> 6 7 int NumberOf1_Solution1(int n) 8 { 9 int count = 0; 10 unsigned int flag = 1; 11 while (flag) 12 { 13 if (n & flag) 14 count++; 15 16 flag = flag << 1; 17 } 18 19 return count; 20 } 21 22 int NumberOf1_Solution2(int n) 23 { 24 int count = 0; 25 26 while (n) 27 { 28 ++count; 29 n = (n - 1) & n; 30 } 31 32 return count; 33 } 34 35 // ====================测试代码==================== 36 void Test(int number, unsigned int expected) 37 { 38 int actual = NumberOf1_Solution1(number); 39 if (actual == expected) 40 printf("Solution1: Test for %p passed.\n", number); 41 else 42 printf("Solution1: Test for %p failed.\n", number); 43 44 actual = NumberOf1_Solution2(number); 45 if (actual == expected) 46 printf("Solution2: Test for %p passed.\n", number); 47 else 48 printf("Solution2: Test for %p failed.\n", number); 49 50 printf("\n"); 51 } 52 53 int main(int argc, char* argv[]) 54 { 55 // 输入0,期待的输出是0 56 Test(0, 0); 57 58 // 输入1,期待的输出是1 59 Test(1, 1); 60 61 // 输入10,期待的输出是2 62 Test(10, 2); 63 64 // 输入0x7FFFFFFF,期待的输出是31 65 Test(0x7FFFFFFF, 31); 66 67 // 输入0xFFFFFFFF(负数),期待的输出是32 68 Test(0xFFFFFFFF, 32); 69 70 // 输入0x80000000(负数),期待的输出是1 71 Test(0x80000000, 1); 72 73 return 0; 74 }
标签:
OFFER
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix