java十進(jìn)制轉(zhuǎn)二進(jìn)制代碼 統(tǒng)計(jì)二進(jìn)制數(shù)中的1的個(gè)數(shù)?
統(tǒng)計(jì)二進(jìn)制數(shù)中的1的個(gè)數(shù)?計(jì)算機(jī)中的數(shù)字是二進(jìn)制存儲(chǔ)的,所以計(jì)算過程也是二進(jìn)制計(jì)算。利用某些位運(yùn)算的特點(diǎn),很容易計(jì)算出1的個(gè)數(shù)。有一個(gè)非常有趣的特性:對(duì)于任何二進(jìn)制數(shù),例如n=10001100,我們將
統(tǒng)計(jì)二進(jìn)制數(shù)中的1的個(gè)數(shù)?
計(jì)算機(jī)中的數(shù)字是二進(jìn)制存儲(chǔ)的,所以計(jì)算過程也是二進(jìn)制計(jì)算。利用某些位運(yùn)算的特點(diǎn),很容易計(jì)算出1的個(gè)數(shù)。有一個(gè)非常有趣的特性:對(duì)于任何二進(jìn)制數(shù),例如n=10001100,我們將其減去1:n-1=10001011。再放觀察:10001100(n)10001011(n-1)通過觀察,n中1的最低位置是第三位,而n-1和n的下三位都不同。如果執(zhí)行“按位與”運(yùn)算,即n&(n-1)=1000。10001100(n)10001011(n-1)10001000(n&(n-1))您可以看到所有三位都變?yōu)?。如果你的數(shù)學(xué)足夠好,你可以得出結(jié)論:[結(jié)論]要去掉整數(shù)n中的最小1,你可以使用n=n&(n-1)。如果你不相信,你可以嘗試更多的數(shù)字或再考慮一下。很容易利用二進(jìn)制數(shù)&count(int=1,n){n)