先上代码段 这段代码是取任意一个数字的最小2的N次幂,因为计算机内存是以二进制来存储的,因此在一些内存申请中可以简化,并且可以运用到其他的方面。 先看原理介绍。–x 和 末尾的 x+1可以防止溢出(个人认识),x|x>>1;是将x转化为二进制然后向右移动位数(这里移动一位),然后取或运算符,可以将其设置为1最后可以得到从1开始的数字。这是二进制运算中的按或运算符,接下来以2147483648为例(–x后得到的数字),2147483648在计算机中以二进制储存是10000000 00000000 00000000 00000000 (int为四字节,因此有32位), 若有一些不正确的地方欢迎大家批评指正。static int pow2gt (int x) { --x; x|=x>>1; x|=x>>2; x|=x>>4; x|=x>>8; x|=x>>16; return x+1; }
11000000 00000000 00000000 00000000 x|x>>1
11110000 00000000 00000000 00000000 x|x>>2
11111111 00000000 00000000 00000000 x|x>>4
11111111 11111111 00000000 00000000 x|x>>8
11111111 11111111 11111111 11111111 x|x>>16
“因为二进制转化为十进制是通过幂来累加的,这样可以做到最高位后的所有位数都为1,即最终结果得到了大于2的最小二次幂。如果有兴趣的读者可以自己实践实践,例如代入4,5,6进行求最终结果,会发现这是非常奇妙的`
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算