首页 > 学院 > 开发设计 > 正文

位运算例题2

2019-11-14 09:14:43
字体:
来源:转载
供稿:网友

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

方法中从右端开始的p1到p2位.

#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左边置0	mask >>= (len - p2);	mask >>= (p1 - 1);       //将掩码p1右边置0,得到p1~p2段为1	mask <<= (p1 - 1);	num &= mask;            	num >>= (p1 - 1);          //将区间移至最低位	exchange(num);}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表