浅谈进制

进制 二进制0b 十进制 八进制0 十六进制0x



这里从最基础的开始:数字系统的由来,讲起

数字系统的由来

1.远古时代:

用结绳记事,或者石板上刻道道来计数

不方便,数据大时难数

非位置化数字系统:

2.罗马数字

比如罗马数字里:V表示5,当三个V排一起时:

VVV表示的不是五百五十五,而是单纯表示三个5相加,是15

这就是非位置化数字系统

3.位置化数字系统

人类现在使用的基本上都是位置化数字系统

而非位置化数字系统由于效率太低,现在基本上已经不使用了

二进制 八进制 十进制 十六进制都是位置化数字系统

由于人类有十根手指,所以很自然的人类选择了用十进制进行数学运算,但是计算机是由复杂的电路和电子元件组成的。他们并没有十根手指,只有通电和不通电两种形式,也就是计算机用二进制来进行数据和程序的存储和运算(二进制也就是0和1,0代表通电,1代表不通电)

这里为了好讲二进制,先讲十进制以便于理解


十进制原理

十进制用10个可用符号来表示1个数字

0 1 2 3 4 5 6 7 8 9

就比如这个数字:

百位 十位 个位

2 3 5

2×100 + 3×10 + 5×1

这个235就代表了三个数字的和:2×100+3×10+5×1

换一种方式来表示就是:2×10^2+3×10^1+5×10^0

那么在二进制中

二进制原理

二进制用2个可用符号来表示1个数字

0 1

在十进制中,我们可以把0123456789十种不同的符号放到不同的位置(十位个位百位......),组成不同的数字


所以在二进制中,我们同样可以把不同的符号,放入不同的位置,组成不同的数字

例: 1 0 1 1

这个1011就表示了:

1×2^3 + 0×2^2 + 1×2^1 + 1×2^0

1×8 + 0×4 + 1×2 + 1×1

也就是8 + 0 + 2 + 1 = 11(10)

注意:这里得到的11是十进制的,因为括号里是10,这里小括号应该是右小角的下角标小括号,这里打不出来,将就着看叭

在10进制中,10^0=1,所以第一位是个位,10^1是十位,10^2是百位


类似的,在二进制中:

八位 四位 二位 个位

2^3 + 0×2^2 + 1×2^1 + 1×2^0

2的0次方=1,2的1次方=2,2的2次方=4,2的3次方=8

类似的11010就是1×2^4+1×2^3+0×2^2+1×2^1+0×2^0=26(10)

所以二进制中的11010=十进制中的26

所以二进制中的11010=十进制中的26

所以二进制中的11010=十进制中的26




那么八进制和十六进制,就是分别用八个和十六个可用符号来表示数字

八进制

八进制用8个可用符号来表示一个数字:

0 1 2 3 4 5 6 7

八进制的数字和十进制的数字其实也是一一对应的

八进制的01234567其实就对应十进制的01234567(10)

2 7 7(8)

2×8^2 + 7×8^1 + 7×8^0

=128 + 56 + 7 = 191(10)

也就是八进制中的277等于十进制中的191

十六进制

十六进制用16个可用符号来表示一个数字:

0 1 2 3 4 5 6 7 8 9 A B C D E F

十六进制的0123456789ABCDEF其实对应十进制的0123456789 10 11 12 13 14 15(10)

2 A E(16)

2×16^2 + 10×16^1 + 14×10^0

=2×256 + 10×16 + 14×1

=512 + 160 + 14 = 686(10)









现在我们知道了其他进制的数字是怎么转化为十进制的,现在学十进制转化为计算机能识别的二进制和其他进制

方法:连除法

十进制转化为二进制:

如:29(10)

⬇/2

14 (10) 余 → 1

⬇/2 ↑

7 (10) 余 → 0

⬇/2 ↑ ➡➡就得到29(10)=11101(2)

3 (10) 余 → 1

⬇/2 ↑

1 (10) 余 → 1

⬇/2 ↑

0 (10) 余 → 1

一直除到此处为0就可以结束了 ,然后把右边的余数从下往上排列

十进制转化为八进制:

如:900(10)

⬇/8

112(10) 余 → 4 ↑

⬇/8 ↑

14 (10) 余 → 0 ↑

⬇/8 ↑ ➡➡得到4061(8)=900(10)

1 (10) 余 → 6

⬇/8 ↑

0 (10) 余 → 1 ↑

同样把右边的余数从下往上排列

十进制转化为十六进制:

如:2717(10)

⬇/16 ↑

169(10) 余 → 13(10) ↑

⬇/16 ↑

10 (10) 余 → 9 (10) ↑ ➡➡得到2717(10)=0A9D(16)

⬇/16 ↑

0 (10) 余 → 10(10) ↑

同样把右边的余数从下往上排列




还有二进制|八进制|十六进制之间的相互转换:

1.由于2^3=8,所以每3位二进制可以转换为1位八进制

如:10111001(2)

按三位数排,排成10 111 001

从右往左数

最后两位不够了要补个0,0放在前面,也就是补成 010 111 001

从右边第一位数开始,前三位是100,也就是1×2^0+0×2^1+0×2^2=1

0 0 1

0×2^2 0×2^1 1×2^0

再往左三位,是111,也就是1×2^0+1×2^1+1×2^2=7

最后三位,010,0×2^0+1×2^1+0×2^2=2

这里同样是从下往上排

所以得到10111001(2)=271(8)

2.由于2^4=16,所以每4位二进制可以转换为1位十六进制

如:10111001(2)

按四位数排,排成1011 1001

从右往左数

从右边第一位数开始,前四位是1001,也就是1×2^0+0×2^1+0×2^2+1×2^3=9

再往左三位,是1101,也就是1×2^0+0×2^1+1×2^2+1×2^3=B

从下往上排

得到10111001(2)=B9(16)





到这里就完全掌握了进制的相互转换

如果有同学想练习,可以把任意一个进制的数字转换成其他进制,网上有很多进制转换器,可以检查自己转换的对错。

--------------------------------------------------------------------------------------------------------------------------------------------所属院校:忻州师范学院

-----------------------------------------------------------------------------------------------------------------------------------------------------------制作:索文涛

进制以及进制之间的转换相关推荐

  1. 进制数与字符串之间的转换

    写在前面: 本文章旨在总结备份.方便以后查询,由于是个人总结,如有不对,欢迎指正:另外,内容大部分来自网络.书籍.和各类手册,如若侵权请告知,马上删帖致歉. 目录 一.C/C++标准库执行 1.字符串 ...

  2. java中各进制之间的转换(十进制转十六进制、十进制转二进制、二进制转十进制、二进制转十六进制)...

    在java编辑中有没有遇到经常需要进行java中各进制之间的转换(十进制转十六进制.十进制转二进制.二进制转十进制.二进制转十六进制)的事情呢?下面我们就来分析一下各自是怎么转换的: [java] / ...

  3. 计算机原理与基础 —— 进制之间的转换(二进制与十、八、十六禁止之间的转换)

    进制也就是进制位,对于接触过电脑的人来说应该都不陌生,我们常用的进制包括:二进制.八进制.十进制与十六进制,它们之间区别在于数运算时是逢几进一位.比如二进制是逢2进一位,十进制也就是我们常用的0-9是 ...

  4. C# 16进制与字符串、字节数组之间的转换

    在串口通讯过程中,经常要用到 16进制与字符串.字节数组之间的转换 字符串转16进制字节数组  1         private static byte[] strToToHexByte(strin ...

  5. 二进制-八进制-十进制-16进制之间的转换

    进制之间的转换 主要用到连个函数: Convert.ToInt32(str,numbased):将字符串转成str,按照numbeased指定的进制转成10进制数: Convert.ToString( ...

  6. python常用的十进制、16进制之间的转换

    一.整数之间的进制转换: hex(16) # 10进制转16进制 oct(8) # 10进制转8进制 bin(8) # 10进制转2进制 二.字符串转整数 ''' 学习中遇到问题没人解答?小编创建了一 ...

  7. JAVA进制及进制之间的转换

    进制 一.进制 二进制: 0.1 满二进一 以0b开头作为标识 在jdk1.7之前程序中无法直接书写一个二进制数字 八进制: 0~7,满8进1 要求以0做开头为标识 十进制 十六进制: 0~9.A~F ...

  8. ByteArray、16进制、字符串之间的转换

    ByteArray.16进制.字符串之间的转换: package fengzi.convert {import flash.utils.ByteArray;public class ByteArray ...

  9. 9277用计算机,关于计算机常用进制以及进制之间的转换笔记

    计算机常用进制以及进制之间的转换 进制的由来 生活中的常用进制 计算机中的二进制 计算机常用四种进制的说明 八进制和十六进制 进制之间的转换 进制的由来 进位就是进位计数制,就是一种计数的方法 古代社 ...

  10. 16进制 转为图片 php_Python 十六进制hex-bytes-str之间的转换和Bcc码的生成

    前言 近期做测试模拟器用到了hex-bytes-str之间的转换bcc码的校验,这里总结了一些方法. 实例 直接上代码 转为十六进制(Hex)字符串 def 执行代码: 方法:getStringFro ...

最新文章

  1. 无人驾驶推进时间表及五大技术领域关键节点
  2. LeetCode-2 Add Two Numbers
  3. Arduino可穿戴开发入门教程LilyPad和LilyPad Simple的介绍
  4. 提高你开发效率的十五个Visual Studio 2010使用技巧
  5. layout_width和width,layout_height和height
  6. Linux正则表达式判断是否是数字示例
  7. Ane技术大全 - Devil程序员
  8. kafka的offset笔记
  9. 图像处理前沿技术_深入浅出人工智能前沿技术—机器视觉检测,看清人类智慧工业...
  10. python中mean的用法_python 的numpy库中的mean()函数用法介绍
  11. 免费python课程排行榜-Python势头大好,PYPL 11 月编程语言排行榜
  12. WSJ0数据集简单介绍
  13. 网页版手游怎么选服务器,吃鸡怎么看自己选的哪个服务器 | 手游网游页游攻略大全...
  14. 【python】用turtle画七巧板
  15. 使用shiro进行权限管理
  16. 2022工作中遇到问题一
  17. 项目成功和失败的几大因素
  18. 旧手机利用(flutter+声网RTC+声网RTM)
  19. springboot+druid+dynamic-datasource+mysql数据库密码加密
  20. 假设检验:一个总体参数的检验、总体方差检验、两个总体参数的检验和两个总体方差的检验

热门文章

  1. django 第一个web页面
  2. Mongo与robomongo
  3. Android LiveData crash: Cannot add the same observer with different lifecycles
  4. 最优控制理论 七、关于数值求解算法的总结及软件分享
  5. 鸿蒙系统下矿山! 华为“矿鸿”重磅发布!
  6. vue实现word,pdf,xlsx文件下载
  7. 批量修改文件创建时间
  8. mysql数据库集群方案
  9. 别说微信QQ不能互传文件了?简单操作几步,一键轻松完成
  10. rocketdock 修改隐藏快捷键