使用位运算判断商品编号是否为2的整数次幂的C++程序
```cpp #include <iostream> using namespace std; int main() { int num; cin >> num; // 使用位运算判断是否为2的整数次幂 if ((num > 0) && ((num & (num - 1)) == 0)) { cout << "yes" << endl; } else { cout << "no" << endl; } return 0; } ``` 上述代码中,通过`cin`读取输入的商品编号`num`。判断`num`是否为 2 的整数次幂时,利用了`num`和`num - 1`进行按位与运算。因为一个数如果是 2 的整数次幂,其对应的二进制数中只有一位是 1,其余都是 0;而`num - 1`的二进制数是把`num`中唯一的 1 变为 0,该 1 后面的所有位变为 1,所以当对`num`和`num - 1`进行按位与运算时,结果为 0。同时需要保证`num`大于 0,因为非正数肯定不是 2 的整数次幂。 ######[AI问答 | 290点数解答 | 2026-02-28 20:42:19]
相关提问
- JSP 实现商品展示模块:分页、搜索、交互与美观界面全搞定!(字节豆包 | 19点数解答 | 2024-12-13 15:00:43)327
- PyCharm 中用 Selenium 编写自动化测试脚本,轻松登录 eShop 测试平台并点击“我的订单”(字节豆包 | 304点数解答 | 2024-11-06 15:38:30)426
- Winform开发:含验证与清空功能的注册页面实现(GPT | 5266点数解答 | 2024-06-14 16:04:40)475
- jQuery 实现姓名、邮箱、电话表单验证:成功显示消息,失败提示错误(百度文心 | 858点数解答 | 2024-10-26 23:36:38)418
- jQuery实现表单验证:姓名、邮箱、电话一个都不能少!(阿里通义 | 629点数解答 | 2024-10-29 09:16:19)337
- Go语言实现:动态用户Websocket服务端,生产者消息精准转发多消费者架构设计(字节豆包 | 559点数解答 | 2025-02-25 09:20:32)239
- Go语言实现Windows环境下高性能WebSocket服务端:生产者-消费者架构设计与代码解析(阿里通义 | 600点数解答 | 2025-02-25 09:21:10)215
- MySQL 数据库操作:用德鲁伊连接池和 Spring JDBC 实现 MVC 架构下 Student 表操作及事务测试全解析(字节豆包 | 1115点数解答 | 2025-03-19 11:17:31)281
- Spring JDBC+德鲁伊连接池:MVC架构下MySQL学生表查询、事务验证及代码实现全解析(DeepSeek | 1275点数解答 | 2025-03-19 11:21:32)266
- C++ 实现:判断 N 个数在二进制、八进制、十进制、十六进制下的可能性(字节豆包 | 812点数解答 | 2026-01-02 19:28:20)41
- Python实现:判断数字在二进制、八进制、十进制、十六进制中的可能性(字节豆包 | 405点数解答 | 2026-01-02 19:43:33)35
- 巧用 Python:判断数字在二进制、八进制、十进制、十六进制中的可能性(字节豆包 | 251点数解答 | 2026-01-02 19:44:35)39