c – N&(1 << x)=何时为真?
发布时间:2020-12-16 10:37:27 所属栏目:百科 来源:网络整理
导读:我最近一直在研究使用位操作生成子集的完整搜索,所以我偶然发现了以下代码: for(int b = 0; b (1n); b++) { vectorint subset; for(int i = 0; i n; i++) { if( b(1i)) subset.push_back(i); } //use subset here} 此代码用于查找一组n个元素的所有子集.我
我最近一直在研究使用位操作生成子集的完整搜索,所以我偶然发现了以下代码:
for(int b = 0; b < (1<<n); b++) { vector<int> subset; for(int i = 0; i < n; i++) { if( b&(1<<i)) subset.push_back(i); } //use subset here } 此代码用于查找一组n个元素的所有子集.我对这部分感到困惑 b&(1<<i) 如果b的第i位为0,这显然是假的,但我不明白为什么如果b的第i位是真的那么它是真的,我的意思是结果不是2 i的力量(因为它不等于一个即真,应该返回假)? 变化: 解决方法
你有一个小小的误解……
事实是:只有0被转换为false而其他所有数字都变为true. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |