2013-06-23 28 views
-5

如果我寫如何評估二進制數字的真假?

PORTA =0b00000001; 
PORTB =0b00000000; 
PORTC =0b11111111; 
PORTD =0b10100110; 
if(PORTA){ 
//will this block be true?if yes then why and how it is evaluated 
} 
if(PORTB){ 
//smae here,to check true or false. 
} 
if(PORTC){ 
//if true then why or false,why? 
} 
if(PORTD){ 
//same 
} 

如果上述說法是錯誤的,那麼如何檢查端口的狀態?

+5

'0'是錯誤的,其他所有的都是真的。 –

+0

「檢查端口狀態」是什麼意思?你想做什麼? – interjay

+0

@interjay其實我想知道的是,無論是端口是true或false.in我的代碼,我寫了,PORTC = 0b11111111;那麼我使用,如果(!PINC)它來總是虛假的,當我這樣寫它,如果(〜PINC),那麼它總是成真,我很困惑怎麼辦呢 – shafeeq

回答

1

通常在C中,任何非零數字將評估爲true。如果要檢查端口中特定位的值,請使用二進制AND運算符&。注意:邏輯AND,&&和二進制AND,&不是一回事。

在你的問題中,只有PORTB評估爲false。

+0

這意味着二進制數首先轉換爲十進制,然後與0比較? – shafeeq

+0

如果在代碼中寫入0b00000001或0x01或1,則沒有區別,它將在機器代碼中產生相同的表示形式。只有零(0,0x00,0b00000000等)將評估爲false。 –