看板 C_and_CPP 關於我們 聯絡資訊
小弟我現在有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
bleed1979:counter += (a >> nbit) & 1; 03/08 03:17
bleed1979:nbit就是bit n的意思,一般是bit0到bit7。 03/08 03:18
genghiskii:bleed大這個方法好聰明 小弟學了一課 03/08 04:42
gozha:其實你的 (a & 128) && 1 也可以 03/08 19:22