[問題] 有沒有辦法直接取第幾個bit的值

看板C_and_CPP (C/C++)作者 (SaoAn)時間15年前 (2011/03/08 02:39), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串1/1
小弟我現在有n個unsigned char, unsigned char一共有8 bit, 現在想做的事情是 把n個第一個bit加起來, 看有沒有超過n/2, 有的話第一個bit就是1, 反之為0 一路做到第八個bit, 最後組合而成新的一個unsigned char 請問有沒有直接取出某個bit的方法? 像Verilog可以直接打a[0]~a[7] 我現在的做法有點繞, 假如要取第一個bit, 就會變成如下 result = a & 128; //(10000000) if(result!=0) counter++; 多了一個and和if感覺很浪費計算時間, 請問各位有沒有什麼方法可以直接取出 某個位置的bit值呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 137.110.115.249

03/08 03:17, , 1F
counter += (a >> nbit) & 1;
03/08 03:17, 1F

03/08 03:18, , 2F
nbit就是bit n的意思,一般是bit0到bit7。
03/08 03:18, 2F

03/08 04:42, , 3F
bleed大這個方法好聰明 小弟學了一課
03/08 04:42, 3F

03/08 19:22, , 4F
其實你的 (a & 128) && 1 也可以
03/08 19:22, 4F
文章代碼(AID): #1DTIPsKd (C_and_CPP)
文章代碼(AID): #1DTIPsKd (C_and_CPP)