通過移位實現:
#includesize_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位
另一方法:
#includebitcount(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分詞工具,具體...
大資料技術隨筆
在美國與技術研究院中的定義是 指一種按使用量付費的模式,這種模式提供可用的,便攜的,按需的網路訪問,進入可配置的計算資源共享池,這些資源能夠被快速的提供,只需要投入極少的管理工作,或與服務 商進行很少的互動。資源共享池裡資源包括 網路,伺服器,儲存,應用軟體,服務等。指無法在一定時間範圍內用常規軟體...