位运算例题2

    xiaoxiao2021-03-26  32

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

    转载请注明原文地址: https://ju.6miu.com/read-661909.html

    最新回复(0)