位运算例题2

来源:互联网 发布:花椒直播mac版 编辑:程序博客网 时间:2024/06/02 07:01

1. 题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示

方法中从右端开始的p1p2.

#include<stdio.h>int exchange(int num)     //将整数以二进制形式输出{int i;i = num % 2;if(num != 0 ){num /= 2;exchange(num);     //采用递归方法}printf("%d",i);}int main(){int num,p1,p2,temp;int mask = ~0;        //掩码补充位int len = 0;printf("Please enter an integer:\n");scanf("%d",&num);   printf("Please enter two integer:\n");scanf("%d%d",&p1,&p2);temp = num;while(temp)               //判断输入的数有几位{temp /= 10;len++;}len = 8 * len;           //总的位数mask <<= (len - p2);      //将掩码p2左边置0mask >>= (len - p2);mask >>= (p1 - 1);       //将掩码p1右边置0,得到p1~p2段为1mask <<= (p1 - 1);num &= mask;            num >>= (p1 - 1);          //将区间移至最低位exchange(num);}



0 0
原创粉丝点击