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


提示:以下是本篇文章正文内容,下面案例可供参考

一、题目

在这里插入图片描述

二、思路

注意此思路是从左向右打印

假设我们要打印10的二进制的奇数位和偶数位,10的二进制如下
在这里插入图片描述

第一步
先打印偶数位:

  1. 确定偶数位,整数在内存中存储占四个字节,32个bit位,偶数位从第2位开始,第32位结束。
  2. 每次想要获取下一个偶数位,需要在原基础上-2位。
  3. 获取该位上的数是1还是0。我们让这个数右移与上1 ,就可以准确获取该位上是0还是1了。0&1 = 0;1&1=1。
    在这里插入图片描述

第二步
打印奇数位

  1. 确定奇数位,整数在内存中存储占四个字节,32个bit位,奇数位从第1位开始,第31位结束。
  2. 每次想要获取下一个奇数位,需要在原基础上-2位。
  3. 获取该位上的数是1还是0。我们让这个数右移与上1 ,就可以准确获取该位上是0还是1了。0&1 = 0;1&1=1。

三、代码实现

从左往右打印

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"); 
}
int main() 
{
	int i = 10; 
	Printbit(i); 
	return 0; 
}

从右往左打印

void printbit(int i)
{
	int n = 0;
	//打印偶数位
	for (n = 1; n <= 31; n+=2)
	{
		printf("%d ", (i >> n) & 1);
	}
	printf("\n");

	//打印奇数位
	for (n = 0; n <= 30; n += 2)
	{
		printf("%d ",(i >> n) & 1);
	}
	printf("\n");
}
int main()
{
	int i = 10;
	printbit(i);
	return 0;
}

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 21:42:02       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 21:42:02       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 21:42:02       57 阅读
  4. Python语言-面向对象

    2024-07-18 21:42:02       68 阅读

热门阅读

  1. ros2--插件

    2024-07-18 21:42:02       26 阅读
  2. 探索 Flask:从入门到精通的完整学习指南

    2024-07-18 21:42:02       21 阅读
  3. antd使用踩坑记录

    2024-07-18 21:42:02       19 阅读
  4. 数组 59.螺旋矩阵Ⅱ

    2024-07-18 21:42:02       22 阅读
  5. 无人机反制:车载侦测干扰一体设备技术详解

    2024-07-18 21:42:02       21 阅读
  6. task1代码分析 #Datawhale #讯飞AI训练营

    2024-07-18 21:42:02       20 阅读
  7. lua 游戏架构 之 资源加载 LoaderManager (一)

    2024-07-18 21:42:02       18 阅读