初出茅庐的小李第108篇博客二进制打印

2023-05-16

二进制打印介绍

C语言在格式化打印的时候有很多格式控制,比如十进制打印用%d输出,十六进制用%x输出,八进制用%o格式输出,但是当我们期望看一个数据的二进制的时候就必须借助计算器或者其他比较不方便于是考虑写一个简单的二进制打印函数。

二进制打印原理

计算机内部存储都是二进制的所以不管是有符号数还是无符号数都是二进制的,利用C语言的位操作就可以实现对每个位的访问,这里我仅仅是为了输出二进制,并不是要把这个数记录下来所以我打印的是2进制字符组成的字符串。

二进制打印代码

void printf_2(int data)
{
	int i = 0;
	for(i = 0;i<32;i++)
	{
		if(data&(0x80000000>>i)) 
		{
			printf("1");
		}
		else 
		{
			printf("0");
		}
	}
	printf("\r\n");	
} 

测试代码

	printf("测试1:参数是十进制正数:  %d\r\n",2147483647); 
	printf_2(2147483647);
	printf("测试2:参数是十进制负数:  %d\r\n",-1); 
	printf_2(-1);	
	printf("测试3:参数是十六进制数:  0x%X\r\n",0x80010000); 
	printf_2(0x80010000);

运行结果在这里插入图片描述

结果解释说明

正数测试

在这里插入图片描述
有符号数的最高位是其符号位所以打印2147483647的结果最高位就是0;

十六进制数测试

在这里插入图片描述

负数测试

由于负数在计算机中是以补码的形式存在的所以-1打印结果是-1的补码

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初出茅庐的小李第108篇博客二进制打印 的相关文章

随机推荐

  • 单片机中常用的串口通信协议帧

    单片机中常用的串口通信协议帧 前言一 单片机串口简介二 常用的通信协议类型1 没有格式2 帧头帧尾 43 数据3 帧头帧尾 43 数据 43 附加功能码4 帧头帧尾 43 数据 43 附加功能码 43 目标地址5 帧头帧尾 43 数据 43
  • 基于STM32F4实现串口1+DMA中断+环形队列的数据收发处理

    基于STM32F4实现串口1 43 DMA中断 43 环形队列的数据收发处理 用法简介总体方案环形队列的实现串口配置串口接收DMA配置串口发送DMA配置注意事项 总结 用法简介 串口加环形队列基本满足普通单片机的数据收发处理 xff0c 实
  • DIY自己的bluerov2(2)

    上一次讲了组装一个ROV做需要的电子器件 xff0c 今天就把剩下的器件 xff0c 舱 xff0c 框架 xff0c 电机啥的统统罗列出来 密封舱 xff0c 顾名思义主要是密封作用 xff0c 将电子器件都放到舱内 这种密封效果比较好
  • 零基础玩转树莓派(五)—控制直流电机

    前面教程学会如何使用树莓派来控制LED灯 xff0c 接下来主要讲如何控制直流电机 xff0c 这样就可以做小车等可以运动的项目 xff0c 可玩性更高 一 硬件介绍 直流电机控制主要用到的硬件为 xff1a 1 烧写好系统的树莓派控制板
  • 全志XR806芯片 串口修改波特率后与目标波特率不匹配如何解决?

    1 问题背景 有客户反应 xff0c XR系列MCU在修改完串口波特率后 xff0c 打印输出的是乱码 xff0c 通过仪器抓波形发现输出的波特率与设置不一致 2 问题描述 串口修改波特率后与目标波特率不匹配 3 问题分析 XR系列MCU的
  • 树莓派价格暴涨买不起?他们自己做了一块价格还不到1/4的开发板平替树莓派,还火到海外去了

    众所周知 xff0c 树莓派诞生之初时的设计有四大要点 一个可编程的硬件 xff08 功能很强 xff09 足够有趣 xff0c 能吸引年轻人 xff08 可玩性确实高 xff09 能反复扔进书包 xff0c 不怕挤坏 xff08 质量杠杠
  • C++ struct与class的区别

    可以归纳为 xff1a struct A char a struct B A char b 1 struct作为数据结构实现体 xff0c 它的数据访问默认是Public公有的 xff0c class作为对象的实现体 xff0c 它的成员变
  • 蚁群算法实现三维避障轨迹规划(Matlab)

    关于蚁群算法 其实大多数优化算法都是 试错 的过程 xff0c 不同的是如何利用在 试错 过程中得到的经验 蚁群算法在 试错 的过程中通过留下信息素对未来的试错过程加以提示 xff0c 从而保证一定的收敛性 代码分析 我写了一份matlab
  • CAN总线基础知识(2)——CAN的数据帧

    CAN总线基础知识 xff08 2 xff09 CAN结构上由7个段组成 xff08 仲裁段包括上篇说的can id 和 RTR xff09 xff0c 如图所示 其中根据仲裁段ID码长度的不同 xff0c 分为标准帧 xff08 CAN2
  • 一种通过printf打印的调试程序的方法

    我们在写代码的时候 xff0c 有时候需要调试程序的时候 xff0c 对于初学者 xff0c 可以通过简单的增加printf函数打印 xff0c 这样能够来跟踪程序的踪迹 xff0c 举个很简单的代码 xff1a include lt st
  • 详解Unity中的Nav Mesh新特性|导航寻路系统 (二)

    前言 第一篇我们简要概述了新版NavMesh的一些新增功能 xff0c 以及旧版的对比 本篇我们来讲一讲NavMeshSurface NavMeshLink这两个组件的参数以及如何应用 xff0c 接下来就进入正题吧 本系列提要 Unity
  • ROS安装包--rqt

    ROS安装包 rqt 安装命令刷新缓存 安装命令 sudo apt get install ros kinetic rqt sudo apt get install ros kinetic rqt common plugins sudo a
  • 【无标题】

    ROS自定义话题传输出现md5sum错误 问题描述 提前从一个程序中使用rosbag record命令对某一话题进行了录制 xff0c 之后用rostopic echo命令确定了录入了信息 但是给另一程序发布的时候 xff0c 终端报错 x
  • 关于CAN标准帧和扩展帧为什么分别占位是11bit和29bit

    关于CAN标准帧和扩展帧为什么分别占位是11bit和29bit 文章目录 关于CAN标准帧和扩展帧为什么分别占位是11bit和29bit前言一 关于标准帧二 关于扩展帧总结写在结尾 前言 之前一直没明白CAN标准帧和扩展帧为什么分别占位是1
  • 旭日x3派个人配置总结(ubuntu server + xrdp)

    旭日x3派基本设置 旭日x3派使用文档 首发 多方位玩转旭日x3派 XRDP 43 Xface4远程桌面设置 安装xrdp并解决闪退 黑屏问题 ROS2 Foxy配置 解决 Failed to connect to raw githubus
  • 思岚S2激光雷达1—初次连接

    1 去官网下载Robostudio xff0c 我这里是windows http www slamtec com robostudio 2 连接激光雷达 3 去官网下载SDK 4 在SDK文件夹里的tools里面找驱动下载驱动 5 电脑成功
  • ZED2双目相机1:标定

    一 下载及安装 xff08 1 xff09 按照下面这个链接 xff1a https blog csdn net TengYun zhang article details 123072847 下载完是这样的 xff1a xff08 2 x
  • ZED2双目相机2:畸变矫正

    1 运行ZED2相机 xff08 注意是在ZED WS工作空间里 xff09 xff08 1 xff09 关闭anconda xff08 如果有的话 xff09 xff1a conda deactivate span class token
  • 用android代码实现一个可以万能播放器

    要实现一个万能播放器需要使用多媒体库 xff0c 可以使用Android自带的MediaPlayer类以及ExoPlayer库 以下是一个简单的示例代码 xff1a 在XML布局文件中添加一个SurfaceView和几个按钮 xff1a s
  • 初出茅庐的小李第108篇博客二进制打印

    二进制打印介绍 C语言在格式化打印的时候有很多格式控制 xff0c 比如十进制打印用 d输出 xff0c 十六进制用 x输出 xff0c 八进制用 o格式输出 xff0c 但是当我们期望看一个数据的二进制的时候就必须借助计算器或者其他比较不