打印整数二进制的奇数位和偶数位

题目:

打印整数二进制的奇数位和偶数位

题目解析:

改题目的意思是将一个32位的二进制数位中的奇数位和偶数位上的数字分别打出。

解题思路:

  1. 因为要打印出32位的二进制数位,且分别打印出奇数位和偶数位,所以我们需要借助循环,循环中的变量需要跳过奇数/偶数位,所以循环中的变量每一次变动是2
  2. 且因为二进制数位中的数字只有0和1组成,于是我们可以借用操作符的方式进行打印和操作。

借用操作符>>和& :

因为&的特性,只有和1&在一起,得出的结果才是1,在借用>>进行移位操作,使得每一个奇数位/偶数位都能进行判断是1还是0

代码演示:

void Printbit(int num)
{
    //奇数位
	for(int i=31; i>=1; i-=2)
	{
		printf("%d ", (num>>i)&1);
	}
	printf("\n");
    
   
    //偶数位
	for(int i=30; i>=0; i-=2)
	{
		printf("%d ", (num>>i)&1);
	}
	printf("\n");
}


//32比特位最高位 也就是第32位是符号位,不进行判断

你可能感兴趣的:(C语言,C问题,c语言)