技術隨筆 計算某char變數bit位為1的總數目

2022-04-02 13:43:13 字數 757 閱讀 6294

通過移位實現:

#include 

size_t func( char x )

int main()

移位思想:

01010101 即為0x55

00110011 即為0x33

00001111 即為0x0f

首先 char是8bit 那麼通過

x = (x & 0x55) + ((x>>1) & 0x55);

這個運算加號左邊計算0 2 4 6位是否為1 並且遮蔽1 3 5 7 位

加號右邊計算1 3 5 7位是否為1 遮蔽 2 4 6位 丟棄0位 且char應該是unsign型別,右移即為邏輯右移高位補零不影響結果(1的數目)

這樣就將這個char兩位兩位的分組(76,54,32,10) 每組1的個數分別儲存在這些組中

x = (x & 0x33) + ((x>>2) & 0x33);

這個運算仿上進行,分組為(7654,3210) 並且將1的個數放在654,210位

最後也是一樣了,放到最低4位裡面 然後輸出結果

其實中間有些位並沒有用到.比如 第二步中的7和3位以及第三步的7654位

另一方法:

#include 

bitcount(char a)

void main()

實現思想:

遮蔽除0位以外的位與1作與運算,若為1 則可知此位為1.sum的累加和即為1的個數.

9 28技術隨筆

1.dns 將網域名稱轉成ip位址 2.虛擬記憶體 作業系統把一部分硬碟當成記憶體來用,避免執行的程式過大的時候記憶體崩掉。它的大小是由cpu的定址空間以及物理盤的剩餘空間決定的。例如32位的系統,定址空間即32位,最大支援4g 2的32次方 的虛擬空間,64位的系統最大支援8g的虛擬記憶體空間。3...

技術隨筆和隨想

老生常談和自我臆想 1.maching learning和deep learning是完全不同的兩類東西。2.監督學習和非監督學習的本質區別在於乙個對於計算機進行監督,乙個讓計算機處於非監督的狀態。4.分詞工具分為幾類,由小到大,jie8常用分詞是比較小的分詞工具,然後到斯坦福的nlp分詞工具,具體...

大資料技術隨筆

在美國與技術研究院中的定義是 指一種按使用量付費的模式,這種模式提供可用的,便攜的,按需的網路訪問,進入可配置的計算資源共享池,這些資源能夠被快速的提供,只需要投入極少的管理工作,或與服務 商進行很少的互動。資源共享池裡資源包括 網路,伺服器,儲存,應用軟體,服務等。指無法在一定時間範圍內用常規軟體...