栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

2公式帮助的力量

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2公式帮助的力量

2 * i ==(i ^(i-1))+ 1

基本上,如果

i
为2的幂,则
1
其位模式将为单个。如果从中减去1,则该位的所有低位将
1
变为
1
,并且该2的幂将变为0。然后
XOR
对这些位进行“
1”运算,从而产生全1的位模式。您将其加1,得到下一个2的幂。

记住异或表:

1 ^ 1 = 01 ^ 0 = 10 ^ 1 = 10 ^ 0 = 0

例:

假设

i
是256,即位模式。

100000000 = 2^8 = 256100000000 - 1 = 011111111 = 2^7 + 2^6 + ... + 2^0 = 255100000000 ^ 011111111 = 111111111 = = 2^8 + 2^7 + ... + 2^0 = 511111111111 + 1 = 1000000000 = 2^9 = 512 = 2*i

这是一个例子,当您没有看到2的幂时

i = 100 = 2^6 + 2^5 + 2^20110 01000110 0100 - 1 = 99 = 2^6 + 2^5 + 2^1 + 2^0 = 0110 00110110 0100 ^ 0110 0011 = 0000 0111 = 2^2 + 2^1 + 2^0 = 70000 0111 + 1 = 000 1000 = 2^3 = 8 != (2*i)

简化版

此外,此检查还有一个修改版本,可以确定某个正无符号整数是否为2的幂。

(i & (i-1)) == 0

基本上,相同的理由

如果

i
为2的幂,则
1
它的位表示中只有一个位。如果从中减去1,则该
1
位将变为0,而所有低位将变为
1
。然后
AND
将产生一个全
0
位模式。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441083.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号