如何計算一個整數中,二進位表示法裡面 1 的個數?

其實不是太難的問題,程式也很好寫,但是今天看到下面的寫法:

#include "stdio.h"
#include
"stdlib.h"

int main()
{
____int num = 0;
____int in = 19;
____int in2 = in;

____while( in != 0 )
____{
________in = in & ( in - 1 );
________num++;
____}

____printf("%02X %d\n", in2, num);

____return 0;
}

很有趣的寫法,而且 Loop 的次數只跟 1 的個數有關。值得看看。

留言

這個網誌中的熱門文章

如何將Linux打造成OpenFlow Switch:Openvswitch

我弟家的新居感恩禮拜分享:善頌善禱

Linux Virtual Interface: TUN/TAP