[問題]位元的1的計算
int bitcount (unsigned int n)
{
int count = 0 ;
while (n)
{
count++ ;
n &= (n - 1) ; //關鍵演算之處
}
return count ;
}
事實上 程式上沒有問題,只是上文中的關鍵之處
8 = 1000
8 - 1 = 0111
這樣可以抓得到該值的二進位只是我不知道該怎麼詮釋這樣的作法
以前最為直觀的作法就是使用移位的方式
8 = 1000 向左移或向右移,計算有1的總合
但是n &= (n - 1) 我不知要怎樣想
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.45.148.54
※ 編輯: markchen 來自: 114.45.148.54 (02/24 16:32)
推
02/24 16:34, , 1F
02/24 16:34, 1F
→
02/24 16:35, , 2F
02/24 16:35, 2F
推
02/24 16:42, , 3F
02/24 16:42, 3F
→
02/24 16:42, , 4F
02/24 16:42, 4F
→
02/24 16:42, , 5F
02/24 16:42, 5F
→
02/24 16:43, , 6F
02/24 16:43, 6F
推
02/24 21:54, , 7F
02/24 21:54, 7F
→
02/25 00:08, , 8F
02/25 00:08, 8F
推
02/25 09:30, , 9F
02/25 09:30, 9F
推
02/25 09:48, , 10F
02/25 09:48, 10F
→
02/25 20:47, , 11F
02/25 20:47, 11F
推
02/25 22:57, , 12F
02/25 22:57, 12F
→
02/25 22:57, , 13F
02/25 22:57, 13F
→
02/25 22:58, , 14F
02/25 22:58, 14F
→
02/26 12:13, , 15F
02/26 12:13, 15F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章