C语言中的一些关键字(十三)

一、位运算

基本思路:
(1)使变量num右移8位,将8~11位移到低4位上。
(2)构造1个低4位为1、其余各位为0的整数。
(3)与num进行按位与运算。
/*程序功能:输出一个整数中由8~11位构成的数*/
main()
 { int num, mask;//掩码
   printf("Input a integer number: ");
   scanf("%d",&num);
   num >>= 8;    /*右移8位,将8~11位移到低4位上*/
   mask = ~ ( ~0 << 4);  
          /*间接构造1个低4位为1、其余各位为0的整数*/
       printf("result=0x%x\n", num & mask);
    } 

程序说明:~ ( ~0 << 4)
    按位取0的反,为全1;左移4位后,其低4位为0,其余各位为1;再按位取反,则其低4位为1,其余各位为0。这个整数正是我们所需要的。


[案例] 从键盘上输入1个正整数给int变量num,按二进制位输出该数。

#include  "stdio.h"
main()
    { int num, mask, i;
       printf("Input a integer number: ");
       scanf("%d",&num);
       mask = 1<<31;  
                   /*构造1个最高位为1、其余各位为0的整数(屏蔽字)*/
      printf("%d=" , num);
      for(i=1; i<=32; i++)
         { putchar(num&mask ? ’1’ : ‘0’);
                /*输出最高位的值(1/0)*/
            num <<= 1;  
                /*将次高位移到最高位上*/
            if( i%4==0 ) putchar(‘,’); 
               /*四位一组,用逗号分开*/
        }
      printf("\bB\n");
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值