2进制的位运算

在该书第97页讲了一种令人费解说明,或者说我暂时无法理解它的讲解,所以我打算在此好好理解说明一下给自己看。

我感觉它说反了,那么我来重新说一下吧。一个非0数的二进制位表示中肯定至少有一个1,假设这个1是从左到右第m位,那么这个数减1的话,那么它第m位从1变成0,其他位不变。如果第m为是0的话,经过减1运算之后,那么它前面的0都会变成1,而遇到的第1个1会变成0,比如二进制数11000,最后一位减1得到10111。然后将10111与11000做与运算得到10000。如果第m为1,比如说是11001,减1后变成11000,然后将11000与11001做与运算得到11000。

从上面两个实例可以看出,一个数将1以后再与原数做与运算最后得到的数的最有一个1将会变成0。这是个有趣的现象。

基于这个思想,那就是说一个数有多少个1就可以进行多少个这样的运算直到整个数变成0。

那么就可以使用这个性质来计算1的个数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容