欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列(C语言)

程序员文章站 2022-07-14 23:42:07
...
#include<stdio.h>
#include<stdlib.h>

//输出奇偶位二进制序列函数
void odd_even_bity(int n){
	int i;  //变量i用以遍历n、len1和len2
	int count = 0;  //变量count判断奇偶位
	int odd = 0;  //变量odd用以保存奇数位
	int even = 0;  //变量even用以保存偶数位
	int len1 = 0;  //变量len1保存奇数位数量
	int len2 = 0;  //变量len2保存偶数位数量
	for (i = n; i; i >>= 1){  //遍历n的每一个二进制位
		if (!(count & 1)){  //若该位是奇数位
			odd |= (i & 1) << len1;  
			//将该数与1相与,得该数的最低位,再左移len1位与odd相或
			++len1;  //len1加1(奇数位数量加1)
		}
		else {
			even |= (i & 1) << len2;  
			//将该数与1相与,得该数的最低位,再左移len2位与odd相或
			++len2;  //len2加1(偶数位数量加1)
		}
		++count;  //count加1(在奇数偶数之间变换)
	}
	printf("%d的奇数位二进制序列是:", n);  //打印提示信息
	for (i = len1 - 1; i>= 0; --i){  //i从len1-1数字遍历到0
		printf("%d", odd >> i & 1);  //打印输出结果
	}
	printf("\n");  //输出换行
	printf("%d的偶数位二进制序列是:", n);  //打印提示信息
	for (i = len2 - 1; i >= 0; --i){  //i从len2-1数字遍历到0
		printf("%d", even >> i & 1);  //打印输出结果
	}
	printf("\n");  //输出换行
}

//主函数
int main(){
	odd_even_bity(20); //调用输出奇偶位二进制序列函数
	system("pause");
	return 0;
}