線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4130
推到 Plurk!
推到 Facebook!

怎麼讀取bit的資料呢...

答題得分者是:暗黑破壞神
liang-shien
一般會員


發表:15
回覆:21
積分:7
註冊:2005-05-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-16 15:50:42 IP:61.230.xxx.xxx 未訂閱
想請問一下喔..我宣告一個byte abc;byte 是一個8bit的integer,那要怎麼分別去讀這8 個bit的0或1阿
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-16 16:22:22 IP:210.66.xxx.xxx 未訂閱
用 and 運算 ex
unsignd char a;
a = 0xF0;
if (a & 0x01)
  printf("bit0 = 1);
if (a & 0x02)
  printf("bit1 = 1);
......以此類推
等你這樣懂了以後。你再去想用 shift 來做這個動作吧。 這個留給你自己思考
liang-shien
一般會員


發表:15
回覆:21
積分:7
註冊:2005-05-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-16 20:01:35 IP:61.230.xxx.xxx 未訂閱
可是我有一個值讀到是 abc=x01 然後我用if(abc & 0x01) 和if(abc &0x03)為什麼這兩各都會成立阿
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-16 22:56:25 IP:210.66.xxx.xxx 未訂閱
0x01 = 00000001b 0x03 = 00000011b 你想。這樣會怎樣? AND 運算還知道吧
tomex.ou
一般會員


發表:8
回覆:54
積分:22
註冊:2005-05-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-18 21:58:07 IP:163.28.xxx.xxx 未訂閱
我根據版大的教導,試著寫出以下的method當作練習:    
 
函數:
unsigned char* ToBinaryChar(unsigned char inputChar )  
  unsigned char c[8];
  for (int i=7; i>=0; i--)
  {
    c[i] = (inputChar & 0x01) ? '1' : '0';
    inputChar = inputChar >> 1;
  }
  return c;
}    使用:
unsigned char input = 0xF0; // Binary(11110000)
unsigned char bin[] = ToBinaryChar(input);  // bin[]="11110000"; 
發表人 - tomex.ou 於 2005/06/18 22:03:45
------
A fan of C#.NET
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-19 01:38:31 IP:61.62.xxx.xxx 未訂閱
引言:想請問一下喔..我宣告一個byte abc;byte 是一個8bit的integer,那要怎麼分別去讀這8 個bit的0或1阿
提供另一個方式,可單獨存取每一個bit < class="code"> #include #include typedef union { unsigned char byte; struct { unsigned char b0:1; unsigned char b1:1; unsigned char b2:1; unsigned char b3:1; unsigned char b4:1; unsigned char b5:1; unsigned char b6:1; unsigned char b7:1; }bit; }TEST; int main(int argc, char *argv[]) { TEST a; a.byte=0x0; a.bit.b0=1; a.bit.b1=0; a.bit.b2=1; a.bit.b7=1; printf("0x%x\n",a.byte); printf("sizeof=%d\n",sizeof(TEST)); system("PAUSE"); return 0; } ABSee數位相機族群的專業網站,免費1G 網路相簿 http://absee.com.tw/law.asp?uRef=15360
tomex.ou
一般會員


發表:8
回覆:54
積分:22
註冊:2005-05-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-19 14:57:22 IP:163.28.xxx.xxx 未訂閱
感謝ddy大大的教導, 讓我這c 的新手學到union及bit field的技巧 在「The Complete Reference C 」這本書的p174-178有詳盡的教學 的確,操作bit,用它是比較適合的。
------
A fan of C#.NET
系統時間:2024-06-02 1:02:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!