問題 B Hz的進製

2021-08-19 02:03:25 字數 1280 閱讀 7844

時間限制: 1 sec  

記憶體限制: 128 mb

提交: 20  

解決: 14 [

提交][

狀態][

討論版]

hz遇到乙個數學問題,想請教聰明的你:給定乙個有符號整數型別的數,hz想知道該數

二進位制表示中1的個數。其中負數用補碼表示。

測試樣例輸入包含乙個有符號整數型別的整數n,注意可以是負數

該數二進位制表示中1的個數。其中負數用補碼表示。

1

-5

1

31

int占用4位元組,32位元(即32位),資料範圍為-2147483648~2147483647[-2^31~2^31-1]

負整數的補碼求法:將其對應正數二進位制表示所有位取反(包括符號位,0變1,1變0)後加1

如 -5 其二進位制補碼1的個數為31

-5對應正數5(00000000000000000000000000000101)

→所有位取反(11111111111111111111111111111010)

→加1    (11111111111111111111111111111011)

】 **一:

#include

#include

#include

using namespace std;

int main()

}else

s=32-i;//減掉二進位制中正數為一時後面的數的個數

for(j=0;j**二:

注釋:在此種情況下,先進行0的個數的計算,再用32-sum比較簡單,當最後一位為0時,它取反後要考慮進製的問題。

最後一位:0——>1——>1+1——>0;

前一位:如果還是一還要考慮進製0——>1——>1+1——>0;

此時需要計算0的個數;(if(n%2==0&&flag==0)   sum++;)

而當這一位值為1(if(n%2==1)  flag=1;)時

進行計算一的個數:1——>0——>0,即為計算0的個數;(if(flag==1&&n%2==1)    sum++;)

最後在32-sum即可。

#include

#include

#include

using namespace std;

int main()

printf("%d\n",sum);

}else

printf("%d\n",32-sum);}}

return 0;

}

關於進製的問題

關於進製的問題 eg 如果某系統15 4 112成立,則系統採用的是幾進製?a.6 b.7 c.8 d.9 解題思路 先看個位數字的乘積 5 4 20 根據選項試出20對哪個數取余為2,排除bc選項,展開等號兩邊 n 5 4 n 2 n 2 解得n 3 舍 n 6 因此答案選a eg 假設在n進製下...

C的進製問題

在這有這樣一道題 假設在n進製下,下面的等式成立,567 456 150216,n的值是?a.9 b.10 c.12 d.18 怎麼樣,是不是很難,那麼下面就用 乙個簡單的例題來學習該如何解決進製問題吧。如果在某系統中,等式15 4 112成立,則系統採用的是六 進製。那麼怎麼知道它採用的是六進製制...

轉進製的問題

進製轉換我們都知道方法,這裡就用 來實現一下,x進製轉換到y進製 其範圍為2到62進製之間轉換,a 到 z 表示10 35,a 到 z 表示36到62 這裡實際上是用到了大數相乘的思想,就是高精度乘低精度的基礎演算法,具體以 顯示 簡單說明兩個函式 inio 函式就是把各類進製轉為十進位制數,怎麼做...