快速判斷二進位制編碼中「1」有奇數個還是偶數個

2021-08-29 13:59:29 字數 428 閱讀 5620

先給出**

int odd_ones(unsigned x)
解釋

第一次異或的結果,第i個位置上是1代表原數中第i位和第i+1位有乙個為1,也就是奇數個1。也就是說,某個位為1,代表從它開始向左連續兩位中1的個數是奇數。

第二次異或,注意是兩位兩位的比較了,所有x是和x>>2做異或運算,比如,若結果第6位為1,那麼代表上一次的結果的第6位和第8位有奇數個1,也就是原數中第6,7,8,9位中有奇數個1。

同樣,到第五次運算結束後,過第0位為1代表0到31位共奇數個1。

整個過程就是不斷的壓縮資訊,先用1位代表從本位開始向左的2位中1的奇偶,然後向左的4位,向左的8位。。。

舉例

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

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

判斷二進位製半整數(二進位制)

10年後,tokitsukaze大佬已經變成了年收入超百萬的的精英程式設計師,家裡沒錢也沒礦的teitoku,找tokitsukaze大佬借1000塊錢,然後tokitsukaze大佬說,借你1024吧,湊個整數。沒錯在2進製下1024是 二進位制整數 乙個正整數滿足其值為2的k次方 k為正整數 我...

二進位制編碼知識

對於整型資料,二進位制的表示為符號位 數值位,對於浮點型資料,十進位制轉二進位制的方式如下 將十進位制浮點型資料轉換為二進位制時分別將整數部分和小數部分轉化為二進位制 對於整數部分,每次除2取餘直到商為0,第乙個除法所得餘數為最低位。即將餘數反序排列 對於小數部分,每次將其小數字乘以2,取其整數字,...