2010-11-26 190 views
3

我在我的書中有這樣的問題,我已經做了檢查我的自我,但我不知道正確的答案,沒有任何解釋。c語言的邏輯運算符misunderestanding

它有兩個部分 「A」 和 「B」

a) A = B & C[0] 
b) A = A ? B : C[0] 

C[0] = 0x000
A = 0x00000000 
B = 0x00002222 

它想從我這

1)what is the result of A 
2) the MIPS instruction for each part 
3)show the bit level representation of each in structure. 

感謝

+0

的 '&' 是按位和,而不是一個邏輯運算符。 B和C的起始值是什麼? (他們是0x1234和0x2222?)你可以從中找出答... – Starkey 2010-11-26 13:43:37

回答

3

&是位與。輸出的每一位爲1,如果兩個對應的輸入位是1:

0x000= .... 0001 0010 0011 0100 
0x00002222 = .... 0010 0010 0010 0010 

AND result = .... 0000 0010 0010 0000 = 0x00000220 

我不知道MIPS但是指令可能只是叫and

?是三元運算符:您的示例意思是「如果A是真布爾表達式,則返回B否則返回C [0]」。通常在C中假爲零且真正爲非零(如果這是標準化的,我不是100%確定的 - 我認爲它不在早期的標準中,但它是常用的)所以

  • 如果A = 0x0000 then(bool)A == false,結果是C [0]。
  • 如果A = 0x0220(結轉從部分結果的),然後(布爾)A == true且結果是B.
2

&在C.逐位與運算 例如。 0001 = 0000

?是寫作的另一種方式if

A = A ? B : C[0] 

說,A獲得的值=(如果A爲真則B ELSE C [0])

轉換爲十六進制到二進制,並做練習。

編輯:澄清:由「和」 - >「位與」

+0

第一個問題,我必須將結果轉換爲十六進制或不是? – user472221 2010-11-26 13:46:38

+0

你應該如果你想執行按位與。 – Muggen 2010-11-26 13:47:30

1

的MIPS:

一個)A = B &Ç [0]

$ T1 = C

$ T2 = B

$ T3 =甲

LW $ t0時,0($ T1);移動Ç到臨時REG

和$ T3,$ T0,T2 $;執行逐位和

B)A = A?B:C [0]

$ T1 = C

$ T2 = B

$ T3 =甲

BEQ $ 0,$ T3,3;如果A是0去3行向下

加$ T3,$ 0,$ T2;移動B到A

Ĵ端;後藤結束

LW $ t0時,0($ T1);螺廣告C到一個臨時REG

加$ T3,$ 0 $ T0;招溫度值轉換成

末: