如何利用一条简单语句判断一个整数是否为2的整数次幂

在写代码的过程中可能会遇到判断一个整数是否为2的整数次幂的问题,除了枚举的方法,还可以利用二进制的知识进行简单快速判断。

2的整数次幂用二进制表示只存在一个1和n个0,因此,我们利用位运算&判断一个整数a与a-1的&是否为0即可。具体代码如下。

代码非常简洁。

12345678910111213141 大专栏  如何利用一条简单语句判断一个整数是否为2的整数次幂51617
#include<bits/stdc++.h>using namespace std;typedef long long LL;bool judge(LL x){	if((x&(x-1))==0)return true;return false;}int main(){LL a;cin>>a;if(judge(a))cout<<"yes"<<endl;else cout<<"no"<<endl;}

原文地址:https://www.cnblogs.com/lijianming180/p/12099616.html

时间: 2024-10-13 00:04:44

如何利用一条简单语句判断一个整数是否为2的整数次幂的相关文章

用一行语句判断一个整数是否为2的幂

一个整数为2的幂说明该整数的二进制中只有一个1. bool isSquareOf2 (int n) { return (n&(n-1))==0?true:false; }

利用JavaScript的if语句判断元素显示隐藏

<html> <head> <meta charset="utf-8"> <title>无标题文档</title> <style type="text/css"> #div1 { width: 100px; height:100px; background: red; display: none; } </style> <script> function showhide

JS判断一个变量的值是否是整数

代码段 Number.isInteger = Number.isInteger || function(value) { return typeof value === "number" && isFinite(value) && Math.floor(value) === value; }; 知识点 ES6的Number.isInteger可以判断 判断是否是整数的步骤:先判断是否是数字,然后判断是否有限的数,最后根据Math的向上.向下或四舍五入取整

面试官:判断一个数是否为2的整数次幂

判断一个正整数是否是2的整数幂(如4是2的2次方,返回true:5不是2的整数次幂,则返回false).要求性能尽可能高. 第一种考虑(乘法) 创建一个中间变量temp,初始值是1,然后进入一个循环,每次循环都让temp和目标值进行比较,如果相等,则说明目标是2的整数次幂, 如果不相等,则让temp乘以2,继续循环比较,直到temp的值大于目标整数时,说明整数不是2的整数次幂. 比如:18 1*2=2;2比18小继续 2*2=4;4比18小继续 4*2=8;8比18小继续 8*2=16;16比1

数据库 将多条SQL语句查询的内容整合成为一个元组

1.情景再现 分类信息 住户 租户 快递 亲友访问 花苑 138 25 44 89 新城 34 150 78 34 以上的一张表中,假如要分别在两个住宅小区统计各类进出的人数,进出的类型可以分为是住户,租户,快递以及亲友访问四个类型. 但是实际的表设计中,住户以及租户是属于这个小区,可以直接统计出来,但是快递以及亲友访问则需要从进出记录查找. 换言之,就是表中的每个元组的数据是从多个表中查出来的,同时可能是用四条sql语句中查询出来的.使用如下表达: ①: select t.name as co

一条简单的更新语句,MySQL是如何加锁的?

看如下一条sql语句: # table T (id int, name varchar(20)) delete from T where id = 10: MySQL在执行的过程中,是如何加锁呢? 在看下面这条语句: select * from T where id = 10: 那这条语句呢?其实这其中包含太多知识点了.要回答这两个问题,首先需要了解一些知识. 相关知识介绍 多版本并发控制 在MySQL默认存储引擎InnoDB中,实现的是基于多版本的并发控制协议--MVCC(Multi-Vers

利用PHP内置函数制作一个简单的验证码

因为这两天学习了一些PHP的内置函数,所以今天就用一些内置函数配合数组来简单的制作一个随机验证码的效果. 例如:2dT5     T22c.... 分析:首先分析验证码的组成: 1.验证码是由数字1-9,大写字母A-Z,小写字母a-z 中随机生成的. 2.我先创建一个包含指定范围单元的数组.(这里应该是三个:数字,大写字母,小写字母). 3.我可以将这些数组合并成一个大的数组 4.随机打乱该函数.ps:其实觉得在这里再做一步将数组随机打乱,感觉也没有什么必要啊!因为后面我们做的不也是随机抽取吗?

一个简单的判断抢购时间是否到达的js函数

原型函数,功能很简单,找到时钟的id,计算数值,到达抢购时间时执行任务. function nwt() {var str=$('#deal_expiry_timer_e3cdcd2a').text(); var out=str.match(/\d+/g);console.log(out); var h=parseInt(out[0]),m=parseInt(out[1]),s=parseInt(out[2]); console.log(h+'#'+m+'#'+s);var calc=h*3600

利用原始套接字实现一个简单的采集网络数据包

//利用原始套接字实现一个简单的采集网络数据包,并进行反向解析IP,MAC地址#include <stdio.h>#include <sys/socket.h>#include <unistd.h>#include <sys/types.h>#include <linux/if_ether.h>#include <linux/in.h> #define BUFFER_MAX 2048 int main(int argc, char *