type
status
date
slug
summary
tags
category
icon
password
不刷题还是不行啊
题目:
leetcode 231
给你一个整数
n
,请你判断该整数是否是 2 的幂次方。如果是,返回 true
;否则,返回 false
。如果存在一个整数 使得 ,则认为 是 2 的幂次方。
示例 1:
示例 2:
示例 3:
示例 4:
示例 5:
位运算:计算机的快速通道
首先,让我们搞清楚什么是位运算。位运算就像是计算机的快速通道,直接在数字的二进制表示上进行操作。想象一下,这就像是你在处理数字时,不用管它们的十进制形式,而是直接在它们的“原子级别”上工作。是不是听起来就很酷呢?
判断2的次幂:一个简单但巧妙的方法
回到我们的问题,怎样用位运算判断一个数是不是2的次幂?这里有一个巧妙的小技巧:
- 在二进制表示中,2的次幂的数字只有一个1,其余都是0。比如2(10),4(100),8(1000)等。
- 当你对这个数减1时,所有低位变成1,那个唯一的1变成0。比如4(100)变成3(011)。
- 如果这个数是2的次幂,那么它和它减1的结果进行“按位与”运算,结果一定是0。因为没有一个相同的位同时为1。
听起来是不是像魔术一样?让我们用代码来揭秘这个魔术:
结语
祝编程愉快,面试顺利!👩💻👨💻🚀🌟