写在前面:
🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝


🎭 人生如戏,我们并非能选择舞台和剧本,但我们可以选择如何演绎 🌟
感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行~~~

文章目录

  • 一、题目描述
  • 二、编程思路
  • 三、代码实现
  • 四、程序详解

一、题目描述

判断一个数是不是 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++

二、编程思路

【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_笔记_02 来判断它是否是 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_开发语言_03 的幂。如果结果是 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_笔记_02,那么这个数就是 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_开发语言_03

三、代码实现

bool isPowerOfTwo(int n) { 
	return n > 0 && (!(n & (n - 1))); 
}

四、程序详解

在理解这个判断方法之前,我们需要了解一些二进制和位操作的基础知识。
  首先,任何 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_开发语言_03 的幂在二进制表示中只有一个位是 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_07,其余都是 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_笔记_02

  • 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_leetcode_09 二进制表示为 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_开发语言_10
  • 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_11 二进制表示为 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_笔记_12
  • 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_13 二进制表示为 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_14
  • 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_15 二进制表示为 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_16

【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_开发语言_03 的幂减去 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_07 时,结果会在二进制表示中翻转所有比最高位 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_07

  • 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_15 二进制表示为 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_16
  • 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_22 二进制表示为 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_笔记_23

【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_开发语言_03 的幂,其二进制表示中只有一个 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_07,减去 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_07 之后,这个 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_07 变成 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_笔记_02,而它右边所有的 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_笔记_02 都变成 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_07。因此,【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_开发语言_03 的幂与它减 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_07 的结果的按位与操作结果为 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_笔记_02,因为没有一个位同时是 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_07


下面是对 !(n & (n - 1)) 的详细解释:

  • n & (n - 1):这是对 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_笔记_35【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_36 进行按位与操作。如果 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_笔记_35【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++ 的幂,那么这个操作的结果应该是 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_开发语言_39
  • !(n & (n - 1)):对上述结果取反,如果 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_笔记_35【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++ 的幂,那么结果将是true

【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_算法_42,因为 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_笔记_02 和负数不是 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_开发语言_03


这里有一个简单的例子来说明:

  • 假设 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_开发语言_45(100 二进制)
  • 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_leetcode_46(011 二进制)
  • 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_笔记_35 & 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_算法_48 & 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_开发语言_49
  • 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_开发语言_50 true

【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_leetcode_51【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_开发语言_03


【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_leetcode_53 不是 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_开发语言_03 的幂,比如 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_leetcode_55【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_c++_56

  • 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_笔记_57【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_leetcode_58
  • KaTeX parse error: Expected 'EOF', got '&' at position 3: n &̲ (n - 1) = 110 & 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_笔记_59
  • 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_算法_60 false

因此,【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_笔记_61 不是 【刷题总结】巧用位运算——一行代码判断一个数是不是 2 的幂(C++实现)_开发语言_03


后记:

🌟 感谢您耐心阅读这篇关于 巧用位运算 的技术博客。 📚

🎯 如果您觉得这篇博客对您有所帮助,请不要吝啬您的点赞和评论 📢

🌟您的支持是我继续创作的动力。同时,别忘了收藏本篇博客,以便日后随时查阅。🚀

🚗 让我们一起期待更多的技术分享,共同探索移动机器人的无限可能!💡

🎭感谢您的支持与关注,让我们一起在知识的海洋中砥砺前行 🚀