文档章节

解释代码(n&(n-1))==0的具体含义

一贱书生
 一贱书生
发布于 2016/11/18 15:23
字数 311
阅读 26
收藏 0
点赞 0
评论 0

1)(A&B)==0的含义

 

A和B的二进制表示的同一位置绝不会同为1。

 

2)n和n-1

若n的最低有效位为1,减去1后为0,其余为均相同,不符合要求。n的最低有效位为0,减去1时,必须向高位借1。

 

3)(n&(n-1))==0的含义

假设 n = 5,二进制表示为101,那么 n-1 = 4,二进制表示为100, 5 & 4 = 101 & 100 = 100 = 4 != 0,下面我们来看更多的例子:

5 & 4 = 101 & 100 = 4
 6 & 5 = 110 & 101 = 4
 7 & 6 = 111 & 110 = 6
 8 & 7 = 1000 & 0111 = 0

我们会发现要使表达式等于0,n-1必须使得n的n-1都向高位进1,也就是说满足一下条件:

x + 1 = n
 x & n = 0

我们来看看有那些数能满足要求:

10 & 01 = 0   -------2^1
100 & 011 = 0  -------2^2
1000 & 0111 = 0  -------2^3
10000 & 01111 = 0  -------2^4
。。。。。。

所谓代码((n & (n-1))== 0)的含义是n满足2的n次方

n的最高有效位为1,其余位为0。因此,n的值是2的某次方。

所以,(n&(n-1))==0检查n是否为2的某次方(或者检查n是否为0

© 著作权归作者所有

共有 人打赏支持
一贱书生
粉丝 19
博文 722
码字总数 600072
作品 0
linux的shell变量之传参

linux中shell变量$#,$@,$0,$1,$2的含义解释 摘抄自:ABS_GUIDE 示例: 其中s@与s*区别: $* 与 $@ 区别: 相同点:都是引用所有参数。 不同点:只有在双引号中体现出来。假设在脚本运行时写了...

ziwenzhou ⋅ 2017/05/07 ⋅ 0

解释代码((n & (n-1))== 0)的含义

思路: 初步查看很难一眼分析出表达式是什么含义,我们不妨举例分析一下,假设 n = 5,二进制表示为101,那么 n-1 = 4,二进制表示为100, 5 & 4 = 101 & 100 = 100 = 4 != 0,下面我们来看...

borey ⋅ 2014/09/11 ⋅ 0

Linuxl中shell变量$#、$@、$0、$1、$2的含义解释

、$@、$0、$1、$2的含义解释 :Shell本身的PID(ProcessID)。 :Shell最后运行的后台Process的PID。 :最后运行的命令的结束代码(返回值)。 :使用Set命令设定的Flag一览。 :所有参数列表...

SharkYu ⋅ 02/28 ⋅ 0

我来理解for循环

简单示例 先看一段简单的代码: 这段代码的含义是什么?求和:sum = 1 + 2 + 3 + .. + n,当前n为5。 这段代码是怎么执行呢? 声明sum,,并赋值0。(int sum = 0) 声明n,赋值为5。(int n...

艳沐石 ⋅ 2016/12/28 ⋅ 0

Linux基础教程 linux下使用find命令根据系统时间查找文件用法

   Linux基础教程 linux下使用find命令根据系统时间查找文件用法 LinuxFind 兄弟连 小编总结这些时间戳包括   复制代码代码如下:   mtime 文件内容上次修改时间   atime 文件被读取...

疯狂的小黑 ⋅ 2016/11/08 ⋅ 0

Linux基础教程 linux下使用find命令根据系统时间查找文件用法

Linux基础教程 linux下使用find命令根据系统时间查找文件用法 LinuxFind 作者:兄弟连   复制代码代码如下:   mtime 文件内容上次修改时间   atime 文件被读取或访问的时间   ctime...

疯狂的小黑 ⋅ 2016/11/04 ⋅ 0

ruby面向对象语言学习第四天

今天继续学习ruby的基本类型,正则表达式,它涵盖的内容非常多。 六、正则表达式 正则表达式指的是一种模式,一般用来和字符串进行匹配,通常一类字符串都具有相同的模式,如电话号码,邮箱等...

若狼 ⋅ 2016/04/25 ⋅ 0

基于物品的协同过滤算法itemCF原理及python代码实现

基于物品的协同过滤算法主要分为两步: (1)计算物品之间的相似度; (2)根据物品之间的相似度以及用户历史行为给用户生成推荐列表。 计算物品之间的相似度公式: |N(i)|是喜欢物品i的用户...

Flying_sfeng ⋅ 2017/02/21 ⋅ 0

Ubuntu实用技巧整理

配置静态ip 编辑 /etc/network/interfaces 文件 加入如下内容: 如何获得网卡名: 重启ubuntu即可。一定要重启! 2. 配置DNS 添加如下内容 执行 3. 如果不能正常使用apt-get命令,尝试执行 ...

紅紅火火 ⋅ 2016/03/09 ⋅ 0

Linux之正则表达式

在使用grep、awk和sed命令时,需要使用正则表达式。 匹配行首与行尾。 匹配数据集。 只匹配字母和数字。 匹配一定范围内的字符串集。 使用句点匹配单字符 句点“.”可以匹配任意单字符。例如...

宏伟的版图 ⋅ 2017/07/15 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Day 17 vim简介与一般模式介绍

vim简介 vi和Vim的最大区别就是编辑一个文件时vi不会显示颜色,而Vim会显示颜色。显示颜色更便于用户编辑,凄然功能没有太大的区别 使用 yum install -y vim-enhanced 安装 vim的三种常用模式...

杉下 ⋅ 58分钟前 ⋅ 0

【每天一个JQuery特效】根据可见状态确定是否显示或隐藏元素(3)

效果图示: 主要代码: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>根据可见状态确定 是否显示或隐藏元素</title><script src="js/jquery-3.3.1.min.js" ty......

Rhymo-Wu ⋅ 今天 ⋅ 0

OSChina 周四乱弹 —— 初中我身体就已经垮了,不知道为什么

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @加油东溪少年 :下完这场雨 后弦 《下完这场雨》- 后弦 手机党少年们想听歌,请使劲儿戳(这里) @马丁的代码 :买了日本 日本果然赢了 翻了...

小小编辑 ⋅ 今天 ⋅ 12

浅谈springboot Web模式下的线程安全问题

我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,所以并不存在线程安全问题。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,...

算法之名 ⋅ 今天 ⋅ 0

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部