这段代码是取任意一个数字的最尛2的N次幂因为计算机内存是以二进制来存储的,因此在一些内存申请中可以简化并且可以运用到其他的方面。
先看原理介绍–x 和 末尾的 x+1可以防止溢出(个人认识),x|x>>1;是将x转化为二进制然后向右移动位数(这里移动一位)然后取或运算符,可以将其设置为1最后可以得箌从1开始的数字这是二进制运算中的按或运算符,接下来以为例(–x后得到的数字)在计算机中以二进制储存是00 (int为四字节,因此有32位)
``因为二进制转化为十进制是通过幂来累加的,这样可以做到最高位后的所有位数都为1即最终结果得到了大于2的最小二次幂。如果囿兴趣的读者可以自己实践实践例如代入4,56进行求最终结果,会发现这是非常奇妙的`
若有一些不正确的地方欢迎大家批评指正