二進位制位運算中 1 的個數

2021-09-29 08:14:51 字數 777 閱讀 7708

題目描述

現在夯夯和朱朱餓了,他們想去吃點東西,他們發現店裡東西的**都是2的次方倍(20, 21,22…)現在夯夯和朱朱想把他們的的錢全都用掉。想知道他們最少能吃多少東西,最多能吃多少東西?

輸入格式

多組樣例,每組樣例佔一行,每行乙個整數,代表他們擁有的總錢數。

輸出格式

分別回答他們的問題,答案用空格隔開。

輸入 #121

輸出 #1

1 21 1

說明/提示

樣例數量 ≤ 104 總錢數 ≤ 1018

前乙個答案就是求二進位制位運算中『1』的個數,以下列舉兩種方法。

判斷二進位制數最右位置的數(temp>>=1 :二進位制數向右移動一位),若為1則count++;

int count, temp, n;

while(~

(scanf

("%lld"

,&n)))

}

運用位運算x & (x-1),優點:直接定位二進位制1的位置,跳過之間的0,比方法一速度更快!

int temp, count, n;

while(~

(scanf

("%lld"

,&n)))

位運算 二進位制中1的個數12

位運算 是把數字用二進位制表示之後,對每一次是0或1的運算。乘除效率低,實際程式設計中盡可能的用移位運算代替乘除法。世界上有10中人,一種人知道二進位制,而另一種人不知道二進位制 五種位運算 與 或 異或 左移和右移,分別對應 異或 相同為0,相異為1。左移運算子m左移n,表示把m左移n位,最左邊的...

位運算之二進位制中1的個數

位運算是把數字用二進位制表示之後,對每一位上0或1的運算。位運算有五種運算 與 或 異或 左移 右移。例如 10001010 3 01010000 如果數字是乙個無符號數值,則用0填補最左邊的 n 位 如果數字是乙個有符號數值,則用數字的符號位填補最左邊的 n 位。例如 00001011 2 000...

模板 位運算 二進位制中1的個數

給定乙個長度為n的數列,請你求出數列中每個數的二進位制表示中1的個數。輸入格式 第一行包含整數n。第二行包含n個整數,表示整個數列。輸出格式 共一行,包含n個整數,其中的第 i 個數表示數列中的第 i 個數的二進位制表示中1的個數。資料範圍 1 n 100000,0 數列中元素的值 109 輸入樣例...