簡體   English   中英

這個“位設置”如何在C中工作?

[英]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值根據以下內容設置:

  • 當(X && Y)為真時,即,X和Y都為真時,設置最低有效位(b0)。
  • A為真時設置b1
  • B為真時設定b2
  • b3很清楚
  • 當C和D都為真時,設置b4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM