java十進制轉(zhuǎn)二進制代碼 統(tǒng)計二進制數(shù)中的1的個數(shù)?
統(tǒng)計二進制數(shù)中的1的個數(shù)?計算機中的數(shù)字是二進制存儲的,所以計算過程也是二進制計算。利用某些位運算的特點,很容易計算出1的個數(shù)。有一個非常有趣的特性:對于任何二進制數(shù),例如n=10001100,我們將
統(tǒng)計二進制數(shù)中的1的個數(shù)?
計算機中的數(shù)字是二進制存儲的,所以計算過程也是二進制計算。利用某些位運算的特點,很容易計算出1的個數(shù)。有一個非常有趣的特性:對于任何二進制數(shù),例如n=10001100,我們將其減去1:n-1=10001011。再放觀察:10001100(n)10001011(n-1)通過觀察,n中1的最低位置是第三位,而n-1和n的下三位都不同。如果執(zhí)行“按位與”運算,即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ù)字或再考慮一下。很容易利用二進制數(shù)&count(int=1,n){n)