输出数字在内存中呈现的二进制数值

来源:互联网 发布:淘宝店价格表 编辑:程序博客网 时间:2024/06/18 06:43

以下例子用于输出一个数字在内存中呈现的二进制数值。
其中有一些知识点需要注意:

1.sizeof(num)用于获得num在内存中占用的字节数
2.<< 是二进制位左移操作

     num<<1 --相当于-- num*2     num<<2 --相当于-- num*2*2     num<<n --相当于-- num*2^n(2的n次方)

3.>> 是二进制位右移操作

     num>>1 --相当于-- num/2     num>>2 --相当于-- num/(2*2)     num>>n --相当于-- num/2^n(2的n次方)

4.& 是二进制位与操作,任何数与1位与都可以得到这个数二进制的最低位

8 & 1 --相当于-- 0b1000 & 0b0001    1000    0001   ------    0001因此计算结果为 1 --相当于-- 0b0001

以下为例子:

void printBinary(int num);int main(){    int q;    do    {        int num;        printf("输入一个数\n");        scanf("%d",&num);        printBinary(num);        printf("按任意键继续,0退出!\n");        scanf("%d",&q);    }    while(q);}//打印数值对应的二进制void printBinary(int num){        // sizeof(num)<<3 --相当于-- sizeof(num)*8    int cnt=(sizeof(num)<<3)-1;    for(int i=cnt;i>=0;i--)    {        // num>>i --相当于-- num/2^i(2的i次方)        //此例中的位移只是为了进行位与运算(&)得到最低位的值        int temp=num>>i;        int b=temp&1;        printf("%d",b);        if(i%4==0)        {            printf("  ");        }    }    printf("\n");}

输出结果

输入一个数10000  0000  0000  0000  0000  0000  0000  0001  按任意键继续,0退出!1输入一个数100000  0000  0000  0000  0000  0000  0000  1010  按任意键继续,0退出!0
0 0
原创粉丝点击