leetcode:231. 2 的幂(位运算)

编程入门 行业动态 更新时间:2024-10-25 05:13:30

<a href=https://www.elefans.com/category/jswz/34/1769930.html style=leetcode:231. 2 的幂(位运算)"/>

leetcode:231. 2 的幂(位运算)

一、题目:

函数原型:bool isPowerOfTwo(int n)

二、思路:

根据题意,要判断一个数是否为2的幂。如果一个数是2的幂,那么该数的二进制表示中只有一个1。所以只需要将该数的二进制表示中的最低位1移除,判断剩下的是否为0。如果为0,则说明二进制中只有一个1;如果不为0,说明二进制中有多个1。

移除二进制中最低位的1的方法:

1.n&(n-1)移除最低位的1

假设n为   

那么n-1为00000000 10000000 00000000 01111111

n&(n-1)为00000000  10000000 0000000   0000000(移除了最低位的1)

2.n&(-n)得到最低位的1(移除除了最低位1的其他所有1)

假设n为00000000 10000000 00000000 10000000

那么-n为10000000 10000000 00000000 10000000(原码)

              11111111    01111111  11111111   10000000(补码)

n&(-n)为 00000000 00000000 00000000 10000000(补码)

               00000000 00000000 00000000 10000000(原码)

三、代码:

代码1

bool isPowerOfTwo(int n)
{if ((n & (n - 1)) == 0)return true;elsereturn false;
}

代码2

bool isPowerOfTwo(int n)
{if ((n & (-n)) == n)return true;elsereturn false;
}

更多推荐

leetcode:231. 2 的幂(位运算)

本文发布于:2023-12-04 19:33:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1662003.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:leetcode

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!