常见的进制和转换

十进制

  • 最常用的计数方式,几乎全世界都在使用
  • 十进制就是满十进一的进制
  • 按权展开,第一位权为10^0,第二位 10^1 ……以此类推,第N位10^(N-1)。该数的数值等于每位的数值*该位对应的权值之和。
    十进制当中一共有10个数字,0 1 2 3 4 5 6 7 8 9,当9之后继续加1需要向前进一位开始循环,10 11 12 13 ... 20 21 22

二进制

  • 计算机底层使用的计数方式
  • 满二进一,二进制中一共存在两个数字:0和1
  • 易于表现,实现简单,易于运算

二进制的产生

二进制是由德国哲学家、数学家莱布尼茨发明的。由于二进制只有0、1两个数字,所以可以很方便的在电路中表示:比如高电平用1表示、低电平用0表示。又比如开关的开用1表示、关用0表示,还可以表示逻辑的真假、是非等。就是因为其简便的方式所以在计算机的世界中也全都使用二进制来表示。图片、音乐、视频、文本文件等底层都是一串串的0和1组成的二进制。



例如上述图片的部分二进制表示如下:


十进制是逢9向高位进1。同样的二进制基数是2,因此是“逢二进一”
以计算机存储传输为例,可以将内存想象为一个一个的小格子,小格子中可以存储一个0或一个1,内存中的每一个小格子,我们称为1bit(位),一个字节(Byte)是8位(Bit)二进制,也就是说一个字节有8位的0或1。具体表现形式如下:

十进制 二进制
1 0000 0001
2 0000 0010
3 0000 0011
4 0000 0100
5 0000 0101
6 0000 0110
7 0000 0111
8 0000 1000
9 0000 1001
10 0000 1010

八进制

  • 满八进一
  • 目前使用不是特别广泛,例如unix系统权限(chmod)
  • 它的优势可以避免使用非数字以外的符号(十六进制除了0-9之外,要用到A-E)
十进制 二进制 八进制
0 0000 0000 0
1 0000 0001 1
2 0000 0010 2
3 0000 0011 3
4 0000 0100 4
5 0000 0101 5
6 0000 0110 6
7 0000 0111 7
8 0000 1000 10
9 0000 1001 11
10 0000 1010 12
... ... ...
15 0000 1111 17
16 0001 0000 20
17 0001 0001 21

十六进制

  • 满十六进一
  • 十六进制中一共有16个数字,由于十六进制是满16才进位,所以十六进制中引入了a b c d e f来表示 10 11 12 13 14 15
  • 编程时候的内存调试,内存中数据、内存地址、html里面用一个8位16进制表示一个颜色一般都会以十六进制显示
  • 在查看二进制数据时,一般也会以十六进制的形式显示
十进制 二进制 八进制 十六进制
0 0000 0000 0 00
1 0000 0001 1 01
... ... ... ...
9 0000 1001 11 09
10 0000 1010 12 0A
11 0000 1011 13 0B
12 0000 1100 14 0C
13 0000 1101 15 0D
14 0000 1110 16 0E
15 0000 1111 17 0F
16 0001 0000 20 10
17 0001 0001 21 11
18 0001 0010 22 12
19 0001 0011 22 13
20 0001 0100 24 14

小结

进制位 十六
规则 逢二进一 逢八进一 逢十进一 逢十六进一
基数 2 8 10 16
数码 0,1 0~7 0~9 09,AF(大小写不敏感)
位权 2^i 8^i 10^i 16^i
表示 B(Binary) O(Octal) D(Decimal) H(Hexadecimal)

为什么要有二进制、八进制、十六进制?

二进制上述有说道是因为简便,可以很方便在电路中表示,尤其是计算机在传输数据时,我们知道网络在传输数据实际上就是在传输电信号,所以我们采用了二进制。

从上述表示示例中可以看出,进制越大标示的数据越简便,所以有了大的进制,而采用2、8、16进制是因为2、8、16分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。

例如:十进制的100, 二进制表示为:0110 0100,八进制表示为:144,十六进制表示为:64

数据的存储

  • 基本单位
    • 位(Bit) ----- 可存储一位二进制数(0或1)
  • 存储容量
    • 1B(byte,字节) = 8 Bit
    • 1KiB(Kilobyte,千字节) = 1024B = 2^10 B = 1024bit * 8 = 8Kb
    • 1MiB(Mebibyte,兆字节,百万字节,简称"兆") = 1024KiB = 2^20 B
    • 1GiB(Gibibyte,吉字节,十亿字节,简称"千兆") = 1024MiB = 2^30 B

要注意的是这里采用的是二进制前缀表示法,由国际标准化组织(ISO)和国际电工委员会(IEC)联合制定和颁布,并且内存的单位制(JEDEC标准)也与之相同

  • 区别于十进制表示(国际单位制标准(SI))的容量单位
    • 1KB = 1000B = 10^3B
    • 1MB = 1000KB = 10^6B
    • 1GB = 1000MB = 10^9B
  • 硬盘生产商、Mac OS、Linux采用以GB(十进制,)计算
  • windwos采用GiB(二进制标准)计算
    • 这也是为什么会出现windows上的硬盘容量到linux显示并一致的原因
    • 同样根据硬盘厂商与用户对于1MB大小的不同理解,所以好多160G的硬盘实际容量按计算机的1MiB=1024KB算都不到1TB,这也可以解释为什么新买的硬盘“缺斤短两”并没有它所标示的那么大。
  • 当然国内用户一般理解为1MiB=1M=1024 KB, 所以为了便于中文化的理解,翻译MiB为MB都是可以的。
  • 字(word):若干字节(B)组成
  • 字长:是用来表示一次性处理事务的固定长度。一个字的位数,计算机系统结构中的重要指标
    • 计算机处理的典型数值也可能是以字长为单位。CPU和内存之间的数据传送单位也通常是一个字长。
    • 还有内存中用于指明一个存储位置的地址也经常是以字长为单位的。
    • 现代计算机的字长通常为16、32、64位。

中文字符、英文字符、标点符号分别占用多少字节?

  • utf8编码 长度1~3字节
    • 英文字符(字符和符号)占一个字节,中文字符(汉字和符号)占三个字节
  • ANSI编码
    • 英文字符(字符和符号)占一个字节,中文字符(汉字和符号)占两个字节
  • unicode编码
    • 英文字符(字符和符号)、中文字符(汉字和符号)都统一占两个字节

任意进制之间的转换

从上述对比我们可以了解到进制的规律:

  • n进制,逢n进一
    • 这里有个特殊的对称三进制:以-1、0、1来计数,感兴趣的可以自行百度
  • 基数:进制中允许使用的数码个数
    • 简单理解就是,可以出现多少个数字,二进制基数为2,八进制基数为8,十六进制基数为16
  • 位权:不同位置的数码说代表的数值,进制的位置 -1 次方
    • 个位位权:0,十位位权:1,百位位权:2 以此类推


      十进制123的位权

知道这些之后我们开始拆解各个进制

这里用()10、()5分别来表示十进制、五进制

十进制拆解

二进制拆解

二进制拆解成十进制

这里是以十进制来拆解的二进制,如果以二进制来拆解二进制,如下所示

  • 由于二进制中不存在2,所以需要将2转换为10
二进制拆解二进制

转换之后通过乘法运算等到原来的二进制数

由此我们可以用来转换其他进制了

二进制&三进制拆解五进制

常见进制间转换

  • 十进制 —> 二进制
    • 整数:除2倒取余数
    • 小数:除2倒取整数
  • 十进制 —> 八进制
    • 整数:除8倒取余数
    • 小数:除8倒取整数
  • 十进制 —> 十六进制
    • 整数:除16倒取余数
    • 小数:除16倒取整数

1)、二、八、十六进制 转换 十进制与上述同理,采用的是位权展示式

2)、十进制 转换 二、八、十六

  • 整数位:除基数取余
  • 小数位:乘基数取整

八进制示例: 十进制123 对应八进制位173

二进制示例:十进制135 对应二进制1000 0111

其他进制以此类推

3)、二、八、十六进制间转换

二进制转八进制

  • 从小数点开始,整数部分向左、小数部分向右,每3位为一组用一位八进制的数字表示,不足3位用0补位(取3合1),就得到一个八进制数

二进制转十六进制

  • 只要从小数点位置开始,向左或向右每四位二进制划分一组,不足四位数可补0(取4合1),就得到一个十六进制

八进制和十六进制之间转换

  • 通过二进制作为中间态再去转换比较容易

视频讲解推荐观看:https://www.bilibili.com/video/BV1d34y1h7Z5/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,755评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,369评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,799评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,910评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,096评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,159评论 3 411
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,917评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,360评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,673评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,814评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,509评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,156评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,123评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,641评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,728评论 2 351

推荐阅读更多精彩内容