怎么判断数字n是否为2的x次方,即2的幂次呢,比如2,4,8,16,32

news/2024/11/29 21:26:29/

怎么判断数字n是否为2的x次方,即2的幂次呢?比如2,4,8,16,32

提示:一些位运算的技巧


文章目录

  • 怎么判断数字n是否为2的x次方,即2的幂次呢?比如2,4,8,16,32
    • @[TOC](文章目录)
  • 题目
  • 如果n & (n-1) = 0,n就是2的幂次
  • 总结

题目

怎么判断数字n是否为2的x次方,即2的幂次呢?比如2,4,8,16,32


如果n & (n-1) = 0,n就是2的幂次

看计算机中存的二进制数
2=10
4=100
8=1000
……
在这里插入图片描述
因此,2的幂次方,说白了就是二进制数里面有一个1,但是1不在0位上
那我们对n取反是啥感觉?
n中1变0,0变1
在这里插入图片描述
显然n & (!n)=0对吧,没问题的

那我且问你,n是2的幂次这种二进制数,n-1是多少呢?
比如
在这里插入图片描述
这时候n & (n-1) = ?
n & (n-1) = 0
是不是达成的效果跟n & (!n) = 0一样?
在这里插入图片描述
这就是2的幂次特殊的地方
记住了
我们如何判断数字n是2的幂次?
就用n&(n-1)=0来判断?n&(n-1)=0即2的n次幂,否则就不是

为啥不用n & (!n) = 0来判断嗯?你扯淡呢?
任何数字n与n取反相与不都是0吗?我举着例子只是想说明n&(n-1)=0达成的效果是n & (!n) = 0
不是让你用n & (!n) = 0来判断:n是否为2的幂次


总结

提示:重要经验:

1)n&(n-1)=0,说明n是2的幂次方
2)位运算速度快,很巧
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。


http://www.ppmy.cn/news/500588.html

相关文章

OpenEuler系统下Qt开发遇到的一些问题及其解决办法

1.qdebug不输出: https://blog.csdn.net/qq_43166035/article/details/124085036 先通过下面的命令找到00deepin-dde-env,然后再按照上面的教程搞。 sudo find / -name *dde-env 2.程序的发布: https://blog.csdn.net/xiaobai_cpp/article/d…

《深度学习调优指南.系统性优化模型》中文版

向AI转型的程序员都关注了这个号👇👇👇 PDF获取地址: 关注微信公众号 datayx 然后回复 指南 即可获取。 提高模型性能的科学方法 机器学习开发的最终目标是最大化模型的效用。尽管不同应用场景的开发流程有所不同(例如时间长度、…

Spring MVC框架步骤

目录 前言1. 配置开发环境2. 创建一个新的Maven项目3. 配置Web.xml文件4. 创建控制器类5. 创建视图6. 配置视图解析器7. 运行应用程序8. 测试应用程序 前言 Spring MVC是一种基于Java的Web应用程序开发框架,它可以帮助开发人员构建灵活、健壮和可扩展的Web应用程序…

Bootstrap 简介

文章目录 Bootstrap 简介什么是 Bootstrap?Bootstrap 包的内容Bootstrap 实例 Bootstrap 简介 什么是 Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的。 历史 Bootstrap 是由 Twi…

uni-app之表单组件教程玩转交互式表单

在UniApp中,表单组件是构建用户交互的重要元素。本教程将详细介绍UniApp中的各种表单子组件,包括(button、checkbox、editor、form、input、label、picker、picker-view、radio、slider、switch和textarea),并提供详细的示例代码。 1. button…

Java反射应用(面试题反射的几种应用)

反射应用一&#xff1a;创建运行时类的对象 1.代码举例 Class<Person> clazz Person.class;Person obj clazz.newInstance(); System.out.println(obj);2.说明 newInstance():调用此方法&#xff0c;创建对应的运行时类的对象。内部调用了运行时类的空参的构造器。要想…

【用户增长】找到用户增长的根本动因

找到用户增长的根本动因 1.没有痛点的用户增长是不持久的 近几年创业的人越来越多&#xff0c;在这些创业失败的案例中&#xff0c;不乏一些 UI 设计非常漂亮的产品&#xff0c;但最终却因为用户增长做不起来而导致创业失败。这些产品失败的最主要原因就是没有找对痛点。 没有…

Android之增量更新详解

前言&#xff1a;自从 Android 4.1 开始&#xff0c; Google Play 引入了应用程序的增量更新功能&#xff0c;App使用该升级方式&#xff0c;可节省约2/3的流量。现在国内主流的应用市场也都支持应用的增量更新了&#xff0c;最常见的应用宝省流量更新。 什么是增量更新&#x…