首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java-判断整数是否为2的整数次幂

https://blog.csdn.net/li_xunhuan/article/details/90138499 题目描述: 给定一个整数,编写一个函数来判断它是否是...2 的幂次方。...,经过观察显然有2的整数次幂其二进制数只有一位为1,那么我们利用这个特点,进行位右移操作,统计1个总个数,最后凭借总个数判断是否为2的整数次幂 代码1: class Solution { public...这里我们仍然利用2的整数次幂只有一位是1的特点进行解题,但是不再用位移操作,二是利用一个性质,2的整数次幂如1000 减1得到的数为0111,除了最高位,其余位都为1,那么进行与运算必得到0;但是如果不是...2的整数次幂,其-1,最高位并仍然为1;例如:7:111减1之后为110,两者进行与运算必定不为0; 代码2: class Solution { public boolean isPowerOfTwo

1.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    题目 判断一个正整数是否是2的整数幂(如4是2的2次方,返回true;5不是2的整数次幂,则返回false)。要求性能尽可能高。...第二种考虑(除法) 2的整数次幂都能被2整除,所以进入一个循环,让目标对2求余,如果有余数,则目标不是2的整数次幂,如果没有余数,然后目标赋值为目标除以2,直到目标小于1,当目标小于1的时候则说明明目标是...第三种考虑(位运算) 让我们看看2的整数次幂转成二进制是什么样的 十进制 二进制 是否为2的整数次幂 8 1000 是 16 10000 是 32 100000 是 64 1000000 是 100 1100100...十进制 二进制 原数值减1 是否为2的整数次幂 8 1000 111 是 16 10000 1111 是 32 100000 11111 是 64 1000000 111111 是 100 10000000...十进制 二进制 原数值减1 n&n-1 是否为2的整数次幂 8 1000 111 0 是 16 10000 1111 0 是 32 100000 11111 0 是 64 1000000 111111

    1.2K20

    js判断是否是子元素

    文本俺将跟大家介绍,如何判断一个当前点击的元素,是否是指定元素的子元素。 解决思路: 俺给父元素指定了一个id,并使用这个循环检查当前元素是否属于它的子元素。...:当前元素是否是被筛选元素的子元素 jQuery.fn.isChildOf = function(b){ return (this.parents(b).length > 0); }; //判断:当前元素是否是被筛选元素的子元素或者本身...方法三: const isDescendant = (el, parentId) => { let isChild = false if (el.id === parentId) { //判断是否是其本身...event => { const parentId = 'mycontainer' if (isDescendant(event.target, parentId)) { //处理是子元素的情况...该解决思路,是常见的解决办法,大家可以拿小本本记好了~类似于不停向上找。

    10.8K00

    判断是否是开发环境工具类

    前言 实际项目中有时候同一个功能可能在不同的环境会执行不同的操作,比如某些收费的功能,开发环境进行开发的时候可能就不会真正去调用收费的接口。...对于如何确定不同的环境,本小节来做一个梳理 这里用到了spring自带的Environment类来处理,获取配置文件中的 spring: profiles: active: dev 来进行确定 所在包...org.slf4j.LoggerFactory.getLogger(EnvironmentUtil.class); private static final String DEV = "dev"; /** * 是否是...e.getMessage()); return false; } } } 这里也可以直接注入Environment 常用功能 获取属性配制文件中的值...environment.getProperty("rabbitmq.address") 获取是否使用profile的 public boolean isDev(){ boolean devFlag

    1.1K20

    js原生判断是否是数字类型

    大家好,又见面了,我是你们的朋友全栈君。...js判断数字类型汇总 最近在写代码的时候,有些逻辑需要判断数字类型,等用到的时候才发现自己了解的方法不太严密,然后就决心查资料汇总了解下有哪些方法比较严密 第一种:typeof + isNaN 使用typeof...可以判断是否是一个数字类型,但是NaN也是数字类型,为了筛除这个可能,进一步通过isNaN来筛除。...isNaN(num) } 第二种:typeof + isFinite 使用typeof可以判断是否是一个数字类型,但是NaN和Infinity也是数字类型,为了筛除这个可能,进一步通过isFinite来筛除...function isNumber(num) { return num === +num } 第六种:正则表达式(最推荐的一种) function isNumber(num) { return /

    9.6K20

    判断一个数是否为4的整数次幂(2的升级版--双份快乐)

    之前写过如何判断一个数是否是 2 的整数次幂,不知道大家是否还有印象。...[1271624526281_.pic.jpg] 但是如何获取他的二进制呢。。。 好吧我上网查一下吧,得到下面 Integer.tobinaryString() 那我们就开始吧。...private static boolean test(int num) { //先判断数字是否大于 0 if (num > 0) { //如果是1的话...答: 是用来获取最左边的bit(其他bit位为0)所代表的数值. 也就是 101001 和 100001 得到的都是 100000 。 说了这么多,4 的整数次幂还没说呢?这边马上开始。...那就是先满足第和 2 的整数幂一样的条件 return n >0 && (Integer.highestOneBit(num) == num); 然后在获取其转成二进制的长度是奇数(偶数个 0 在加一个

    63900

    如果通过 IP 判断是否是爬虫

    通过 IP 判断爬虫 如果你查看服务器日志,看到密密麻麻的 IP 地址,你一眼可以看出来那些 IP 是爬虫,那些 IP 是正常的爬虫,就像这样: [log screen] 在这密密麻麻的日志里面,我们不仅要分辨出真正的爬虫...如果查看服务器日志,我们可以先通过 User-agent 大致判断出是爬虫还是正常用户,例如: Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com...Google 搜索引擎的爬虫......这些都是爬虫的 User-agent,只要是开发过爬虫的小伙伴都知道,User-agent 可以伪造的,仅仅通过 User-agent 来判断爬虫是不准确的,我们还要通过...IP 地址判断是否是爬虫。...具体操作不在此赘述,直接输入 IP 即可查询爬虫的详细信息,同时也可以参考这篇文章:爬虫进行 IP 识别,有具体用法。 通过以上的一些步骤,应该能很轻松的通过 IP 来判断是不是爬虫了。

    2.2K20

    如何判断电脑是否激活

    想知道电脑是否激活其实并不难知道,用鼠标右键在“此电脑”上选择属性,能够直接看到Windows的激活状态。 ?...验证电脑是否为永久激活稍微麻烦一些,Win+R组合键后输入 slmgr.vbs -xpr 弹出的对话框是永久激活状态就可以安心了。 ?...而要是向下面这样带时间限制的,那绝对是KMS或使用试用账号临时激活的Windows 10,时间一到就嗝屁! ? 不信?...再输入slmgr.vbs -dlv就可以看到激活的详细信息,带时间限制的一般都是下图这样的,妥妥的盗版无疑。...先去https://www.microsoft.com/zh-cn/accessibility/windows10upgrade下载升级软件,升级后再登录微软账号,系统就会显示已激活,而且是永久性的。

    3.7K40

    如何判断TCP连接是否可用?

    面试遇到一个问题,如何判断一个TCP连接是断开了的,这个断开的意思就是意外中断了,而不是Client或者Server主动断开了。...),根据Client的回复来判断Client是否在线;同样,Client在一段时间内如果没收到心跳包,则认为Server出问题了,连接不可用。...那么Server可以利用select来进行连接是否可用的判断,具体如下:设置接收的socket为异步的方式使用select()测试一个socket是否可读如果select返回值为1,说明socket就绪...也就是说当recv返回-1时,可能是socket出现问题,也可能是中断信号,需要进一步判断。...利用recv阻塞的读取返回也能够判断连接是否可用,而基于这套机制,最核心的问题就是:IO复用的过程中如何判断一个socket可读,或者说就绪,也就是select什么时候会返回socket就绪描述符(socket

    38010
    领券