close

1.define是在幹嘛?
例如:#define RuLai 16,就是說之後的RuLai都會被16代替。這並不是說RuLai是一個變數,而是編譯器會先把所有文字RuLai用文字16取代,然後才編譯。

2.為什麼一定要用1,2,4,8,16...?
一個char由8個bit組成:
(以下為'A'的資料,ASCII碼中'A'為65,轉換為二進位是01000001)

bit76543210
value(0或1)01000001

因為在二進位中,這些數值剛好代表某個bits。
參考下表:
十進位二進位
100000001
200000010
400000100
800001000
1600100000
3200100000
6401000000
12810000000
所以可以利用一些位元運算子去判斷char的某個bit是否為0或是1

3.預設都不會武功為什麼是這樣寫?(char skills='\0')
'\0'代表的是十進位值0,也就是二進位值00000000

4.為什麼學會吸星大法是skills|SiSing?不懂
  為什麼檢查是否學會吸星大法是 skills & SiSing?不懂

& | 是位元運算(和 && || 不同)意義如下:
ABA&B
111
100
010
000
    
ABA|B
111
101
011
000
因此:(以下為舉例)
欲判斷是否學到該武功:
skills=00101101
SiSing=00001000
skills & SiSing=00001000
可利用&來判斷某個bit是否被設定
※在C/C++中,if(a),只要a不為0都會被判斷為true而執行if內的程式碼
欲設定學到武功:
skills=01000000
SiSing=00001000
skills & SiSing=01001000
可利用|來設定某個bit而不會影響到其它bit的狀態

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 汪思穎 的頭像
    汪思穎

    kathle40的部落格

    汪思穎 發表在 痞客邦 留言(0) 人氣()