程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了2公式帮助的力量大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决2公式帮助的力量?

开发过程中遇到2公式帮助的力量的问题如何解决?下面主要结合日常开发的经验,给出你关于2公式帮助的力量的解决方法建议,希望对你解决2公式帮助的力量有所启发或帮助;

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

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

记住异或表:@H_696_3@

1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

例:@H_696_3@

假设i是256,即位模式。@H_696_3@

100000000 = 2^8 = 256

100000000 - 1 = 011111111 = 2^7 + 2^6 + ... + 2^0 = 255

100000000 ^ 011111111 = 111111111 = = 2^8 + 2^7 + ... + 2^0 = 511

111111111 + 1 = 1000000000 = 2^9 = 512 = 2*i

i = 100 = 2^6 + 2^5 + 2^2

0110 0100

0110 0100 - 1 = 99 = 2^6 + 2^5 + 2^1 + 2^0 = 0110 0011

0110 0100 ^ 0110 0011 = 0000 0111 = 2^2 + 2^1 + 2^0 = 7

0000 0111 + 1 = 000 1000 = 2^3 = 8 != (2*i)

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

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

基本上,相同的理由@H_696_3@

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

解决方法

我知道Java中的(2 * i ==(i ^(i-1)+ 1)会让我发现数字是否为2的幂,但是有人可以解释为什么这样做有效吗?@H_696_3@

大佬总结

以上是大佬教程为你收集整理的2公式帮助的力量全部内容,希望文章能够帮你解决2公式帮助的力量所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。