进制间转换

news2024/10/7 13:15:09

md,离开学校好多年了,这些基础趁现在还记得记录一下,不然怕哪天还给老师就尴尬了,方便复习

基本概念

  • 二进制:(逢2进1)由0和1组成。
  • 十六进制:(逢16进1)由0-9,A-F组成。
  • 各种进制数的后缀字母分别为:
  • B :二进制数 (binary)。
  • O :八进制数 (octal)。
  • D :十进制数 (decimal)。
  • H :十六进制数 (hexadecimal)(十六进制一般会以“0x”开头,或以“H”结尾。
  • 十进制数通常不加后缀,十进制数后的字母 D 可省略。

二进制转化为十进制

1、无符号整数二进制数转化为十进制

无符号整数的二进制转化为十进制数,从二进制数的右边第一位起,从右往左,先用二制位置上的数乘以2的相应位数的幂,然后把每一位的乘积相加即可得到二进制数对应的十进制数。

【例题】把二进制数1101001转化为十进制数。

解析:从二进制数1101001右边第一位开始,第一位的数字是1,则有1 * 2^0 =1,第二位的数字是0,则有0 * 2^1 =0,第三位的数字是0,则有0 * 2^2 =0,第四位数字是1,则有1 * 2^3 =8,第五位数字是0,则有0 * 2^4 =0,第六位数字是1,则有1 * 2^5 =32,第七位数字是1,则有1 * 2^6 =64。

再把所有积相加即可得1+0+0+8+0+32+64=105,故二进制数1101001转化为十进制数是105。

2、带符号二进制整数转化为十进制数

带符号的二进制数转化为十进制数,先观察二进制数最高位是什么数,如果是1,则表示是负数,如果是0则表示是正数,确定符号后再来转化为十进制数。

【例题】把带符号的二进制数10000000 00010000转化为十进制数。

解析:带符号的二进制数原码,最高位代表的是符合位,我们先观察最高位是1,则表示这个是负数,故可求得此二进制数对应的十进制数是
-(0 * 2^0 + … + 1 * 2^4 + … )=-16。

3、小数转化为十进制数

小数的二进制数转化为十进制数的方法,从左往右,用二进制位数上的数字乘以2的负位数次幂,然后把所有乘积相加即可得。

【例题】把二进制1.1101转化为十进制数。

解析:整数部分转化为十进制数是1 * 2^0 =1,

小数部分1 * 2^ -1 + 1 * 2^-2 + 0 * 2^-3 + 1 * 2^-4 =0.8125,

则二进制数1.1101对应的十进制数是1.8125。

十六进制转化为十进制

十六进制与十进制的对应关系:

  • 十六进制:0 1 2 3 4 5 6 7 8 9 A B C D E F(字母不区分大小写)
  • 十进制:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  • 十进制中的数位排列是这样的…… 万 千 百 十 个 十分 百分……
  • 16进制中的数位排列是这样的…… 16^4 16^3 16^2 16^1 16^0 16^-1 16^-2 ……

【例题】2AF5换算成10进制。
5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 =
5 * 16^0 + 15 * 16^1 + 10 * 16^2 + 2 * 16^3 = 10,997

十进制转化为二进制

1、整数转化为二进制数

十进制整数转换为二进制整数采用"除2取余,逆序排列"法。
具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

在这里插入图片描述
【例题】789=1100010101(B)
789/2=394 余1 第10位
394/2=197 余0 第9位
197/2=98 余1 第8位
98/2=49 余0 第7位
49/2=24 余1 第6位
24/2=12 余0 第5位
12/2=6 余0 第4位
6/2=3 余0 第3位
3/2=1 余1 第2位
1/2=0 余1 第1位

2、小数转化为二进制数

十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,此时0或1为二进制的最后一位。或者达到所要求的精度为止。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。

【例题】0.625=(0.101)B
0.625 * 2=1.25 取出整数部分1
0.25 * 2=0.5 取出整数部分0
0.5 * 2=1 取出整数部分1

【例题】0.7=(0.1 0110 0110…)B
0.7 * 2=1.4 取出整数部分1
0.4 * 2=0.8 取出整数部分0
0.8 * 2=1.6 取出整数部分1
0.6 * 2=1.2 取出整数部分1
0.2 * 2=0.4 取出整数部分0
0.4 * 2=0.8 取出整数部分0
0.8 * 2=1.6 取出整数部分1
0.6 * 2=1.2 取出整数部分1
0.2 * 2=0.4 取出整数部分0

十进制转化为十六进制

与十进制转二进制类似;
对于整数部分,用被除数反复除以16,除第一次外,每次除以16均取前一次商的整数部分作被除数并依次记下每次的余数,直到商为小于1时为止;对于小数部分,采用连续乘以基数16,并依次取出的整数部分,直至结果的小数部分为0为止。

十六进制与十进制的对应关系:

  • 十六进制:0 1 2 3 4 5 6 7 8 9 A B C D E F(字母不区分大小写)
  • 十进制:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

【例题】十进制数23785转为十六进制。
第一步:23785/16=1486余9;
第二步:1486/16=92余14;
第三步:92/16=5余12;
第四步:5/16=0余5;
第五步:而十六进制中,10对应为a、11对应为b…15对应为f,再将余数倒写为5ce9;

二进制与十六进制互相转换、

在这里插入图片描述
以小数点为分界点,小数点的位置不变,分整数转换和小数转换,一位十六进制对应四位二进制,不足则补0,凑够1比4的规律;
整数部分,从右到左每四位分开,不足四位时补0;
小数部分,从左到右每四位分开,不足四位时补0;
然后按一位十六进制对应四位二进制的规律进行转换,对换规律如上图所示;

【例题】二进制100101100转成十六进制。
先将二进制100101100从右到左每四位分开,不足四位时补0:
1 0010 1100 ----> 0001 0010 1100
然后按:一位十六进制对应四位二进制的规律进行转换,对换规律如上图所示;
所以:二进制100101100转成十六进制为:12C;

【例题】将二进制101011.101转换为十六进制。
首先,以小数点为分界点,小数点的位置不变;
然后,整数部分,101011,从右到左每四位分开,不足四位时补0:
10 1011 ----> 0010 1011;
其次,小数部分,101,从左到右每四位分开,不足四位时补0:
101 ----> 1010;
所以101011.101 ----> 0010 1011.1010;
最后转换,按一位十六进制对应四位二进制的规律进行转换,对换规律如上图所示;
101011.101 ----> 0010 1011.1010 的十六进制为:2B.A

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/389455.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

编码器SIQ-02FVS3驱动

一.简介 此编码器可以是功能非常强大,可以检测左右转动,和按键按下,所以说这一个编码器可以抵三个按键,而且体积非常小,使用起来比三个按键要高大尚,而且驱动也简单。唯一不足的点就是价格有点小贵6-8元才…

Faster RCNN 论文阅读

1.网络架构 VGG16网络 anchors:人工放上去的 RPN对anchors进行二分类,正样本,负样本 RoIP:前面的框框已经圈出目标,但还不知道具体属于哪个类,它就是干这个工作的 2.VGG网络 VGG网络可以任意替换其他的任意神经网络&am…

Spring核心模块——Aware接口

Aware接口前言基本内容例子结尾前言 Spring的依赖注入最大亮点是所有的Bean对Spring容器对存在都是没有意识到,Spring容器中的Bean的耦合度是很低的,我们可以将Spring容器很容易换成其他的容器。 但是实际开发的时候,我们经常要用到Spring容…

虚拟机安装Windows 10

虚拟机安装Windows 10 镜像下载 方法一:下载我制作好的镜像文件->百度网盘链接 提取码:Chen 方法二:自己做一个 进入微软官网链接 下载"MediaCreationTool20H2" 运行该工具 点击下一步选择路径,等他下载好就欧克了…

我就不信你还不懂HashSet/HashMap的底层原理

💥注💥 💗阅读本博客需备的前置知识如下💗 🌟数据结构常识🌟👉1️⃣八种数据结构快速扫盲🌟Java集合常识🌟👉2️⃣Java单列集合扫盲 ⭐️本博客知识点收录于…

MicroBlaze系列教程(7):AXI_SPI的使用(M25P16)

文章目录 AXI_SPI简介MicroBlaze硬件配置常用函数使用示例波形实测参考资料工程下载本文是Xilinx MicroBlaze系列教程的第7篇文章。 AXI_SPI简介 Xilinx AXI-SPI IP共有两个:一个是标准的AXI_SPI,即4线制SPI,CS、SCLK、MOSI和MISO,另一个是AXI_Quad SPI,支持配置成标准SP…

pygame10 扫雷游戏3

上一节课我们完成了扫雷游戏地图中雷数量的显示,今天我们将把雷的生成做出来 一、地雷的生成 地图中有20*20共400个格子,我们可以设定一共可以生成40个地雷,为了使得每次生成的地图都不一样,可以使用随机数randint,每…

为什么使用Junit单元测试?Junit的详解

Hi I’m Shendi 为什么使用Junit单元测试?Junit的详解 Junit简介 Junit是一个Java语言的单元测试框架。 单元测试是一个对单一实体(类或方法)的测试 JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression test…

AUTOSAR FunctionalSafety

概述 随着汽车功能复杂度的急剧增加,功能安全作为一个系统特征开始被重视,影响着系统设计决策。软件作为一个因素影响着系统级的复杂度。新的技术和概念可以被用在软件开发中来减少复杂度,来实现功能安全。 AUTOSAR提供了一些安全措施和机制来支持安全系统开发,但是并不是…

MATLAB绘制椭圆形相关系矩阵图

数据/代码准备 数据及代码下载: 下载专区-《MATLAB统计分析与应用:40个案例分析》程序与数据 绘图函数: matrixplot(data, PARAM1,val1, PARAM2,val2, ...) 案例 数据如下: MATLAB代码如下: clc close all clear …

升级 vue3 常见问题总汇

Ⅰ、前言 虽然 vue3 是没有删除 vue2 的 选项式 API , 但是我们升级vue3 还是需要修改很多问题的下面来看看我们升级常见的一些问题 👇 文章目录Ⅰ、前言Ⅱ、解决兼容问题1、路由的创建方式2、路由的方法变化3、升级 vuex 到 4.x4、作用域 插槽语法修改…

Hyperf使用RabbitMQ消息队列

Hyperf连接使用RabbitMQ消息中间件 传送门 使用Docker部署RabbitMQ&#xff0c;->传送门<使用Docker部署Hyperf&#xff0c;->传送门-< 部署环境 安装amqp扩展 composer require hyperf/amqp安装command命令行扩展 composer require hyperf/command配置参数 假…

Windows+VS2019用vcpkg编译colmap以及用Cmake编译colmap源码

WindowsVS2019用vcpkg编译colmap以及用Cmake编译colmap源码 Window下官方建议用vcpkg安装。这里我已经安装好了VS2019以及cuda11.7。 1.安装vcpkg git clone https://github.com/microsoft/vcpkg cd vcpkg .\bootstrap-vcpkg.bat2. 使用vcpkg编译colmap .\vcpkg install co…

Java软件开发好学吗?学完好找工作吗?

互联网高速发展的当下&#xff0c;Java语言无处不在&#xff1a;手机APP、Java游戏、电脑应用&#xff0c;都有它的身影。作为最热门的开发语言之一&#xff0c;Java在编程圈的地位不可撼动。可是&#xff0c;听名字就很专业的样子。Java语言到底好学吗&#xff1f;刚入坑编程圈…

CAPL脚本要注意区分elcount和strlen求数组长度的区别,不然要吃大亏

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…

【C++】AVL树,平衡二叉树详细解析

文章目录前言1.AVL树的概念2.AVL树节点的定义3.AVL树的插入4.AVL树的旋转左单旋右单旋左右双旋右左双旋AVL树的验证AVL树的删除AVL树的性能前言 前面对map/multimap/set/multiset进行了简单的介绍&#xff0c;在其文档介绍中发现&#xff0c;这几个容器有个共同点是&#xff1…

Linux基础命令-setfacl设置文件ACL策略规则

Setfacl 命令介绍 先查看文档中如何描述这个命令的NAME setfacl - set file access control lists setfacl&#xff08;Set file access control lists&#xff09;直译过来是设置文件访问控制列表 &#xff0c;其主要功能是用于设置文件ACL策略规则。FACL即文件访问控制列表…

GEC6818开发板JPG图像显示,科大讯飞离线语音识别包Linux_aitalk_exp1227_1398d7c6运行demo程序,开发板实现录音

GEC6818开发板JPG图像显示 | 开发板实现录音一.GEC6818开发板JPG图像显示1.jpg图片特性2.如何解压缩jpg图片1.对jpegsrc.v8c.tar.gz进行arm移植2.进入~/jpeg-8c对jpeg库进行配置3.编译4.安装&#xff0c;将动态库存放到 /home/gec/armJPegLib5.清空编译记录6.自己查看下 /home/…

C语言-基础了解-06-C存储类

C存储类 一、存储类 存储类定义 C 程序中变量/函数的的存储位置、生命周期和作用域。 这些说明符放置在它们所修饰的类型之前。 下面列出 C 程序中可用的存储类&#xff1a; auto register static extern auto 存储类 auto 存储类是所有局部变量默认的存储类。 定义在函数…

【IDEA】如何在Tomcat上创建部署第一个Web项目?

看了网上很多教程&#xff0c;发现或多或都缺失了一些关键步骤信息&#xff0c;对于新手小白很不友好&#xff0c;那么今天就教大家如何在Tomcat服务器&#xff08;本地&#xff09;上部署我们的第一个Web项目&#xff1a; 共分为三个部分&#xff1a; 1. IDEA创建Web项目&am…