变式 1:是不是 2 的幂

👁️ 33 人浏览 💬 0 人评论 ❤️ 添加收藏

2 的幂(1、2、4、8……)的二进制只有一个 1。妙招:n & (n - 1) 会把 n 最低位的那个 1 消掉,所以 n 是 2 的幂 ⇔ n > 0 且 n & (n - 1) 等于 0。

输入一个 1~255 的整数 n,是 2 的幂输出 YES,否则输出 NO。例如输入 128,输出:

YES

运行后看画布:从上到下是 n、n - 1、n & (n - 1) 的二进制。公式对了,可判断条件少了一对括号。

代码里以 @youci 开头的 printf 只负责运行后在画布上显示中间值,不影响输出和判题,不用改。

提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论
🔒 登录并作答后可看讨论