[英]How does this “bit set” work in C?
unsigned int error_bits =
( X && Y )
| ( A == TRUE) << 1
| ( B == TRUE) << 2
| ( C == TRUE &&
D == TRUE) << 4;
我相信這里的一般概念是根據某些條件將32位中的每一位設置為真或假 - 每個位代表一些錯誤。
使用上面的語法,我對於設置,移位以及在哪里/為什么有點困惑。
任何澄清都是有幫助的。
謝謝。
你是對的。 該行之后的位布局為:
Bits X-5: 0
Bit 4: (C == TRUE && D == TRUE)
Bit 3: 0
Bit 2: B == TRUE
Bit 1: A == TRUE
Bit 0: (X && Y)
從最重要到最不重要的位。 這樣的東西可以更具可讀性(品味):
unsigned int error_bits = 0;
if( X && Y )
error_bits |= 1;
if( A == TRUE )
error_bits |= 2;
if( B == TRUE )
error_bits |= 4;
if( C == TRUE && D == TRUE )
error_bits |= 16;
如果A為TRUE,則A == TRUE將評估為1。 1 << 1為2,或僅設置第2位的整數(從最低有效編號)。 1 << 4是16,或者只設置第5位的整數。
error_bits
值根據以下內容設置:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.