c c++-这个断言的意义是什么?

问题描述

这个断言的意义是什么?

int nbuckets;
Assert(nbuckets > 0 && (nbuckets & -nbuckets) == nbuckets);

(nbuckets & -nbuckets) == nbuckets的意义是什么?

解决方案

判断是有符号还是无符号

解决方案二:

(nbuckets & -nbuckets) == nbuckets
& 的优先级高于 -,即:(nbuckets & (-nbuckets)) == nbuckets
这是对 nbuckets 与 -nbuckets 进行按位与操作,操作后的结果还要等于 nbuckets。
什么数满足这个要求呢?答案是这个数是:2 的 n 次方,n 从 0 开始,依次:1,2,3,4,...n

解决方案三:

这个问题,主要还是要清楚负数的二进制是如何表示的:正数的二进制,先取反,再加上一。
如果是 10000,先取反为:01111,再加上一等于: 10000,这时再取按位与也就是: 10000。与原数相同!
非 2 的 n 次方,如: 10001,先取反为: 01110,再加上一等于:01111,按位与后不等于数。
以上说明没有考虑高位,因为正数的高位都是零,执行按位与后也是零。

时间: 2024-11-01 02:59:26

c c++-这个断言的意义是什么?的相关文章

TDD的iOS开发初步以及Kiwi使用入门

测试驱动开发(Test Driven Development,以下简称TDD)是保证代码质量的不二法则,也是先进程序开发的共识.Apple一直致力于在iOS开发中集成更加方便和可用的测试,在Xcode 5中,新的IDE和SDK引入了XCTest来替代原来的SenTestingKit,并且取消了新建工程时的"包括单元测试"的可选项(同样待遇的还有使用ARC的可选项).新工程将自动包含测试的target,并且相关框架也搭建完毕,可以说测试终于摆脱了iOS开发中"二等公民"

引用内部函数绑定机制,R转义字符,C++引用,别名,模板元,宏,断言,C++多线程,C++智能指针

 1.引用内部函数绑定机制 #include<iostream> #include<functional>   usingnamespacestd; usingnamespacestd::placeholders;   //仿函数,创建一个函数指针,引用一个结构体内部或者一个类内部的共有函数 structMyStruct {    voidadd(inta)    {        cout <<a <<endl;    }    voidadd2(in

【C/C++学院】0816-引用包装器/仿函数/转义字符 R”()”/using别名/模板元编程 比递归优化/智能指针/多线程/静态断言以及调试技能的要求 assert

引用包装器  std::ref(变量) #include<iostream> template<class T> void com(T arg)//模板函数,引用无效,引用包装器 { std::cout <<"com ="<< &arg << "\n"; arg++; } void main() { int count = 10; int & rcount = count; com(coun

《深入理解C++11:C++ 11新特性解析与应用》——2.5 静态断言

2.5 静态断言 类别:库作者 2.5.1 断言:运行时与预处理时 断言(assertion)是一种编程中常用的手段.在通常情况下,断言就是将一个返回值总是需要为真的判别式放在语句中,用于排除在设计的逻辑上不应该产生的情况.比如一个函数总需要输入在一定的范围内的参数,那么程序员就可以对该参数使用断言,以迫使在该参数发生异常的时候程序退出,从而避免程序陷入逻辑的混乱. 从一些意义上讲,断言并不是正常程序所必需的,不过对于程序调试来说,通常断言能够帮助程序开发者快速定位那些违反了某些前提条件的程序错

正则表达式断言、巡视(Assertions)、正向断言、反向断言介绍_正则表达式

断言(Assertions)在正则表达式概念里面难理解,它通常指的是在目标字符串的当前匹配位置进行的一种测试但这种测试并不占用目标字符串,也即不会移动模式在目标字符串中的当前匹配位置.详细可以看看,正则表达式匹配解析过程探讨分析(正则表达式匹配原理),里面提到"零宽度"很多元字符,只是对特殊位置进行匹配,它们可以理解为断言. 断言元字符 常见断言元字符有: \b, \B, \A, \Z, \z, ^ ,$ 它们只是表示特殊位置,各自作用如有字符串AB,带位置表示为:0A1B2 元字符

中国采购团四面出击的三层意义

梅新育 中国采购团四面出击,几乎是世界经济和全球贸易满目萧瑟中仅有的一抹亮色.与上世纪九十年代在美国发动贸易摩擦阴影下多少有些被动派出的采购团不同,目前在国际市场上四面出击的中国采购团,要主动得多.我们可以从三个层次分析其意义: 第一个层次,对于拥有足够支付能力的国家而言,危机从来就是扩大进口的良机,因为危机会迫使卖方降低要价,并放松出口管制.作为发展中国家,中国需要进口必要的技术和设备:作为"世界工厂",中国需要进口越来越多的能源和原材料:作为世界外汇储备最多的国家,我们有充足的支付

08总结09展望:超越自我,用心做好有意义的事,开开心心生活每一秒!

http://yulimin.javaeye.com/blog/308570   在动车D830上看到吴小莉发表于报林第2008年12总第131期第43页的一篇短文,名为<生命的弹性>,读了两遍感觉很好!于是,拍之留下,分享于此! 这篇文章让我回想起高三的时候写的<生命的思索>,这里太多的故事了,今后或许会单独来写一写,很有意义!也让我一辈子无法忘记自己写的这一篇文章,也许,这一篇文章会在很长的时间内鞭挞着我自己去思索.前进. 2008年有太多的事情,也太匆忙,对我自身来讲,很多事

源代码-我在学习Android 的ZXing开源项目二维码时 有几个类 不清楚他具体的意义,功能。

问题描述 我在学习Android 的ZXing开源项目二维码时 有几个类 不清楚他具体的意义,功能. ①BitMatrix.java ②ByteMatrix.java ③MultiFormatWriter.java ④QRCodeWriter.java 这4个 我实在不懂 这功能,这里面哪个 是将输入字符串 变成那个0,1 那个的?用什么算法了...我这是Android工程. 谢谢了...

java-求问按位&amp;amp;amp;按位|按位^按位~的意义是什么

问题描述 求问按位&按位|按位^按位~的意义是什么 我知道按位操作的规则计算方式,就是不清楚位运算出来的值的作用意义,请大神告知 解决方案 比如说一个函数,需要一些参数,这些参数既可以定义为很多个bool变量,也可以使用一个整数,每个二进制位表示一个bool变量,后者更简单. windows api中经常有这样的设计,比如不同的窗口风格.那么这种一个整数表示的二进制变量,怎么取得和设置某一位呢?就要用到位运算. 再比如,一些加密算法,也需要用到位运算. 解决方案二: 最常用的是标致位,用来取/设