簡體   English   中英

位測試。計數位

[英]Bit Testing.Counting the bits

為什么打印47(00101111)的第6位為1。從右邊開始,從1開始計數?

 #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
        int mask1,mask2;

        //bit  testing;
        mask1=1<<3;
        mask2=1<<6;
        if(47&mask1!=0)
            printf("\n bit number 3 is 1");
        else
            printf("\n bit number 3 is 0");
        if(47&mask2!=0)
            printf("\n bit number 6 is 1");
        else
             printf("\n bit number 6 is 0");

        return 0;
    }

按位AND運算符&優先級低於不等式運算符!= 所以這:

47&mask1!=0

是相同的:

47&(mask1!=0)

如下添加括號:

(47&mask1)!=0

您將獲得預期的結果。 確保對mask2進行相同的檢查。

暫無
暫無

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

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