当前位置: 首页 > news >正文

计算机基础(5)——进制与进制转换

💗计算机基础系列文章💗

  • 👉🍀计算机基础(1)——计算机的发展史🍀
  • 👉🍀计算机基础(2)——冯诺依曼体系结构🍀
  • 👉🍀计算机基础(3)——计算机的系统组成🍀
  • 👉🍀计算机基础(4)——操作系统概述🍀
  • 👉🍀计算机基础(5)——进制与进制转换🍀
  • 👉🍀计算机基础(6)——编码与解码🍀
  • 👉🍀计算机基础(7)——数字图像技术🍀
  • 👉🍀计算机基础(8)——音频数字化(模电与数电)🍀
  • 👉🍀计算机基础(9)——原码、补码、反码🍀
  • 👉🍀计算机基础(10)——编程语言与跨平台🍀

进制

进制也就是进位计数制,是人为定义的带进位的计数方法。 对于任何一种进制—X进制,就表示每一位置上的数运算时都是逢X进一位。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。

十进制

由于人类解剖学的特点,双手共有十根手指,故在人类自发采用的进位制中,十进制是使用最为普遍的一种。成语“屈指可数”某种意义上来说描述了一个简单计数的场景,而原始人类在需要计数的时候,首先想到的就是利用天然的算筹——手指来进行计数。

数值本身是一个数学上的抽象概念。经过长期的演化、融合、选择、淘汰,系统简便、功能全面的十进制计数法成为人类文化中主流的计数方法,经过基础教育的训练,大多数的人从小就掌握了十进制计数方法。盘中放了十个苹果,通过数苹果我们抽象出来“十”这一数值,它在我们的脑海中就以“10”这一十进制编码的形式存放和显示,而不是其它的形式。从这一角度来说,十进制编码几乎就是数值本身。

十进制的基数为10,数码由0-9组成,计数规律逢十进一

十进制数:

0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23...

二进制

二进制有两个特点:它由两个数码0,1组成,二进制数运算规律是逢二进一

为区别于其它进制,二进制数的书写通常在数的右下方注上基数2,或在后面加B表示,其中B是英文二进制Binary的首字母。

例如:二进制数10110011可以写成 ( 10110011 ) 2 (10110011)_2 (10110011)2,或写成10110011B。对于十进制数可以不加标注,或加后缀D,其中D是英文十进制Decimal的首字母D。

  • 二进制数:
0,1,10,11,100,101,110,111,1000,1001,1011,1100,1101,1110,1111,10000,10001,10010,10011,10100,10101,10110...

八进制

由于二进制数据的基数R较小,所以二进制数据的书写和阅读不方便,为此,在小型机中引入了八进制。八进制的基数R=8=2^3,有数码0、1、2、3、4、5、6、7,并且每个数码正好对应三位二进制数,所以八进制能很好地反映二进制。八进制用下标8或数据后面加O(Octal )表示 例如:二进制数据 ( 11101010.010110100 ) 2 (11 101 010 . 010 110 100)_2 (11101010.010110100)2 对应八进制数据 ( 352.264 ) 8 (352.264)_8 (352.264)8352.264O

  • 八进制数:
0,1,2,3,4,5,6,7,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,30,31,32,33...

十六进制

由于二进制数在使用中位数太长,不容易记忆,所以又提出了十六进制数。十六进制数有两个基本特点:它由十六个数码:数字0~9加上字母A-F组成(它们分别表示十进制数10~15),十六进制数运算规律是逢十六进一,即基数R=16=2^4,通常在表示时用尾部标志H或下标16以示区别,在c语言中用添加前缀0x以表示十六进制数。

例如:十六进制数4AC8可写成 ( 4 A C 8 ) 16 (4AC8)16 (4AC8)16,或写成4AC8H0x4AC8

  • 十六进制数:
0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,10,11,12,13,14,15,16,17,18,19,1a,1b,1c,1d,1e,1f,20,21,22,23...

进制转换

位权

一个十进制数110,其中百位上的1表示1个 1 0 2 10^2 102,既100,十位的1表示1个 1 0 1 10^1 101,即10,个位的0表示0个 1 0 0 10^0 100,即0。

一个二进制数110,其中高位的1表示1个 2 2 2^2 22,即4,低位的1表示1个 2 1 2^1 21,即2,最低位的0表示0个 2 0 2^0 20,即0。

一个八进制数110,其中高位的1表示1个 8 2 8^2 82,即64,低位的1表示1个 8 1 8^1 81,即8,最低位的0表示0个 8 0 8^0 80,即0。

一个十六进制数110,其中高位的1表示1个 1 6 2 16^2 162,即256,低位的1表示1个 1 6 1 16^1 161,即16,最低位的0表示0个 1 6 0 16^0 160,即0。

可见,在数制中,各位数字所表示值的大小不仅与该数字本身的大小有关,还与该数字所在的位置有关,我们称这关系为数的位权

Tips:十进制数的位权是以10为底的幂,二进制数的位权是以2为底的幂,八进制数的位权是以8为底的幂,十六进制数的位权是以16为底的幂。数位由高向低,以降幂的方式排列。

按权求和计算

二进制数、八进制、十六进制数转换为十进制数的规律是相同的。把x进制数按位权形式展开多项式和的形式,求其最后的和,就是其对应的十进制数——简称“按权求和”也叫按权展开计算法。

  • 2进制转10进制如图所示:

( 10101.01 ) 2 转 10 进制: (10101.01)_2转10进制: (10101.01)210进制:

最终求得结果: ( 10101.01 ) 2 (10101.01)_2 (10101.01)2=(21.25)10

  • 8进制转10进制如图所示:

( 306 ) 8 转 10 进制 (306)_8转10进制 (306)810进制

最终求得结果: ( 306 ) 8 (306)_8 (306)8=(198)10​

  • 16进制转10进制如图所示:

( 1 a 8 ) 16 转 10 进制 (1a8)16转10进制 (1a8)1610进制

最终求得结果:(1a8)16=(424)10

倒数取余计算

一个10进制数转换为一个R进制数采用除以R取余法,即用R连续除以10进制,直到商为0,最终按照倒序的方法得到余数即可,这种简单的计算方法我们陈伟倒数取余法。

Tips:R表示进制,10进制转换为2进制则一直除以2得到余数,然后倒数取余,10进制转换为8进制则一直除以8得到余数之后倒数取余,以此类推。

10进制转2进制如图所示:
25 D 转二进制 25D转二进制 25D转二进制

10进制转8进制如图所示:
90 D 转八进制 90D转八进制 90D转八进制

10进制转16进制如图所示:
298 D 转十六进制 298D转十六进制 298D转十六进制

相关文章:

  • 明天15点!如何打好重保预防针:迎战HVV经验分享
  • python11 序列的相关操作
  • Unity 性能优化之LOD技术(十)
  • vue 将echart 下载为base64图片
  • 【计算机毕业设计】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别
  • 解决 Spring Cloud GateWay报错:Exceeded limit on max bytes to buffer : 262144
  • 如何把docker里的内容拷贝出来
  • 挑战你的数据结构技能:复习题来袭【6】
  • 小白级教程—安装Ubuntu 20.04 LTS服务器
  • C++数组实现推箱子游戏
  • Python数据框操作 -- 提取数据
  • OpenCV中的圆形标靶检测——斑点检测算法(二)
  • 如果你收到客户这样的回复,说明订单快了!
  • Intersection Observer API---交叉观察器 API
  • java判断申请时间是否不晚于请假时间的下周一
  • 分享的文章《人生如棋》
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 0基础学习移动端适配
  • IDEA常用插件整理
  • iOS 颜色设置看我就够了
  • JavaScript DOM 10 - 滚动
  • magento 货币换算
  • mockjs让前端开发独立于后端
  • October CMS - 快速入门 9 Images And Galleries
  • Python打包系统简单入门
  • Ruby 2.x 源代码分析:扩展 概述
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 包装类对象
  • 计算机在识别图像时“看到”了什么?
  • 看域名解析域名安全对SEO的影响
  • 微信小程序--------语音识别(前端自己也能玩)
  • #pragma pack(1)
  • (Note)C++中的继承方式
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一)u-boot-nand.bin的下载
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)jdk与jre的区别
  • (转)setTimeout 和 setInterval 的区别
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .Net CF下精确的计时器
  • .NET 中 GetProcess 相关方法的性能
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .netcore 获取appsettings
  • .NET构架之我见
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .NET是什么
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • /etc/sudoer文件配置简析
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • [Algorithm][动态规划][子序列问题][最长递增子序列][摆动序列]详细讲解
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [bzoj1006]: [HNOI2008]神奇的国度(最大势算法)