程式設計計算數字二進位制中含有1的個數(32位機器為例)

2021-08-17 06:18:07 字數 878 閱讀 9893

了解數字的二進位制位

我們知道數字在計算機中是以二進位制形式儲存的,其實數字是以補碼的形式儲存的,在此我們可以了解一下,關於三種」碼」 ,即就是 原碼、 反碼 、補碼。數字有正負之分,正數的原碼、反碼、補碼都是一樣的,負數有所不同,如果我們想要得到乙個負數的補碼,我們先必須寫出這個負數的原碼,比如:-1其原碼是(100…01),共32位數字,最高為是符號位1,表示是負數,0表示是正數,然後我們對除符號位以外的每位數取反,得到了負數的反碼(111…10),只有最後一位是0其餘都是1,最後給反碼加上1就得到最終的補碼,就是32個全1(111…11)。

進行邏輯分析

我們要得到乙個數字的二進位制中含有幾個1,我們就必須對二進位制的每乙個數字的位進行乙個「遍歷」,由於有32位,所以我們要進行32次迴圈,哪一位為1,則1的數量加1,執行32次(在此我們要建立乙個變數進行計數),最核心的就是如何判斷這一位是不是1,我們舉個例子:15的補碼是000…1111含有4個1,現在我們要得到第一位1,我們可以使其他位為0,只保留最後一位1,因此我們可以與上乙個1,結果得到1,如果該二進位制位不是1而是0,則與1相與,則為0,所以這個可以作為我們判斷該二進位制位是否為1的條件,我們得到了,第一位,我們如何得到第二位呢,這裡我們可以採用右移操作,這裡注意,此時這個數字雖然右移一位,但是本身並沒有被改變,所以我們還需要重新賦值,如:(a = a >> 1)

**如下

二進位制算數17倍

問題 d 17倍 時間限制 1 sec 記憶體限制 128 mb 提交 345 解決 29 提交 狀態 討論版 命題人 admin 題目描述 學習程式設計的lanlan記得老師給她布置的第乙個任務是 輸入乙個數n,然後輸出17 n的值。當然這個任務非常簡單,經過一段時間的學習,蘭蘭有了一些的進步,老...

計算二進位制中的1

如果乙個整數不為0,那麼這個整數至少有一位是1。如果我們把這個整數減1,那麼原來處在整數最右邊的1就會變為0,原來在1後面的所有的0都會變成1 如果最右邊的1後面還有0的話 其餘所有位將不會受到影響。舉個例子 乙個二進位制數1100,從右邊數起第三位是處於最右邊的乙個1。減去1後,第三位變成0,它後...

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

題目 請實現乙個函式,輸入乙個整數,輸出該數二進位制表示中 1 的個數。例如,把 9 表示成二進位制是 1001,有 2 位是 1。因此,如果輸入 9,則該函式輸出 2。示例 1 輸入 00000000000000000000000000001011 輸出 3 解釋 輸入的二進位制串 0000000...