进制_深入理解

纯粹的由自己的理解和猜测所写,转载需注明原地址。

目录

  1. 何谓进制
  2. 为何有二进制、十进制、十六进制
  3. 进制的表示
  4. 进制间的转化

1.何谓进制

遥想远古时期,我们的祖先还在与野兽搏斗,那时候部落的族长希望知道目前收货了多少条鱼。但是如何衡量鱼的数目呢? 于是便有了数字,1代表1条鱼,2代表2条鱼,...,n代表n条鱼。当部落族长收货了100条鱼时,犯愁了,怎么因为100个符号的特别不好记忆,而且万一收货了1000条鱼怎么办?难道要记住1000个符号么?于是部落族长想到了一个绝妙的主意,即从1开始数起,数到10的时候,便写两个数字,用1,0的组合代表着10条鱼,那么当出现20条鱼时,就写20,当100条鱼时候,便写100,于是尽管大家都只知道10个数字,但是却可以表示无穷无尽的数。我们称这种表示方法为进制。

2.为何有二进制、十进制、十六进制

先谈谈十进制,由于大多数人类天生有10个指头,每个指头代表一个数,这极大的方便了部落的族人们学习数数,就像小时候家长们常说,算不清楚就数自己的指头。于是乎大家天生的亲热十进制,这大概也是十进制的来由。

为什么二进制,这就不得不提到计算机了,由于10机制有10种不同的状态,对于我们的手而言这当然可以,但是对于元器件而言,要表示10种状态则显得非常的困难,难以稳定表示。而想要元器件稳定的输出,最好的方式就是表示两种状态,开关,大小...,于是乎大家开始关注二进制。

那么为什么要16进制呢?
首先要知道为什么1个byte有8个bit

  1. 首先大家应该知道byte是什么,byte是计算机最小可寻址单元。也就是计算器每次获取数据不是一个bit一个bit获取,而是一次获取一个byte对应的bit。
  2. 那么为什么不是1个byte对应1个bit,或者说为什么byte是最小寻址单元而不是bit?因为一个bit表示范围只有0和1实在太有限,几乎没有作用,计算机出于寻址的性能考虑,大部分场景下,所需要获取的数据都需要一个组合的bit来表示。
  3. 那么为什么一个byte对应8个bit呢?大家知道计算机是来自图灵机,也就是图灵发明,也就是英国人发明。那么对于英语而言,当时最好的编码方式当然是ascii,ascii总计128个,可以用7个bit位表示出来,但是出于推广(欧洲不止有英语,还有如法语等需要256位才能表示,即iso-8859-1)所以,现代计算机中一个byte有8个bit。
    综上所述:一个byte对应多个bit是为了性能,而对应8bit其实是为了更好的编码。毕竟对于当时的计算机而言,最重要的是显示文字。

那么为什么要用16进制呢?
8个bit可以表示256个数,很显然正常人难以记录256个字符。
这种情况下,我们当然希望把8个bit拆开表示,而用二进制来表示很显然非常的冗余,而用3进制或者5进制表示的话,比如表示一个byte,很显然3进制需要3个字符才能表示,比较多余,5进制尽管只用2个字符表示,但是非常第二个字符必须做限制,这当然不方便我们,所以只有4进制刚好符合要求,只需要2个字节,且第二个字符不需要做任何限制。

最后我们在理解一次进制,一个真值可以有无数种进制,而进制只是表示真值的一种方式

3. 位值制

我们表示数的方法通常是:


而一个十进制则可以表示为:


这里我们给数下个定义:

  • 基数: 在这里,10就是基数,代表其中总共包含10个不同数的符号,所谓的几进制,其实就是基数进制。
  • 位权:在这里 10n就是权,代表着这个位置的单位值.。
  • 位值:也就是在某个位置上的值如 dn

4.进制间的转化

进制转换始终要理解一点:进制再怎么变,我们都假设真值不变。

1.按权展开相加法
通常来说,我们人类习惯10进制相加,所以这种方法通常用于整数和小数其他进制转换成十进制

二进制转换十进制:

1101  => 1 * 2^3 + 1 * 2^2 + 0 * 2^1 +  1 * 2^0 
      => 8 + 4 + 1 
      => 13

十六进制转换十进制:

0XD7  =>13 * 16^1 + 7 * 16^0
      =>215

2.除基取余法
适用于整数10进制转其他进制。

10进制转2进制:


想想为什么要这么做?
还是那句话,直值不变。
真值不变,那么说明10进制数一定对应着某个2进制数,那么我们只要拿到每一位对应的值就好了。如何拿到呢?(如何符合人类的方法拿到)

我们可以把整数看成:didi-1...d0
我们如何获得d0呢?
我们除以基数就好,其余数就是d0,此时整数向右移动一位。
如果想获取d1呢?我们再次除以基数,其余数为d1以此类推,当没有数可以除时,也就是最后移位了。
那么推广一下:
当我们除以n次基数时,相当于整个数向右移n位,移出来的数(余数)就是n-1位的位值。

可以看出除基取余法的本质就是,通过右移把数一个个拿出来

所以10进制转16进制就是不断的除以16,把余数转化16进制就好。

3.当位权间存在基数倍关系
如2进制转4进制,4进制转2进制。
2进制转8进制,8进制转2进制。
4进制转16进制,16进制转4进制。
2进制转16进制,16进制转2进制。
....
以上的情况,都可以直接用几位低进制来表示高进制。直接转化。
适用于整数和小数的间存在权的倍数的进制转换。
(非常难过,市面上的资料都是讲怎么记住,而没有一个人用数学公式来推导这个过程,我只想对着那些写书教授竖起中指。)
由于数学太弱,就不说了。纯粹当记忆记吧。

2进制转16进制,以及16进制转2进制,都可以用以上办法来做,记住4位2进制抵1位16进制即可。

4.小数的进制转换
我们知道正整数最小为1,每个进制的字符集都包含表示1的字符,所以不可能存在进度丢失问题。
而小数的最小正数是多少呢?显然无法确定。

所以可以明确,当进制转换时小数可能存在精度丢失问题

那么小数如何表示?

d1 * b-1 + d2 * b-2 + ... + dn * b-n

复习下指数知识:
mn = m * m * ... *m; (n个m相乘)
ma / mb = m a-b
当a<b时,a-b即为负数,也就是说 ma-b = 1/m|a-b|

由此我们可以得出小数的表示:

d1 * (1/b1) + d2 * (1/b2) + ... + dn * (1/bn) (b为基数,d属于b中数)

可见,b进制最大的正小数为 1/b1

那么改如何进行小数的进制转换呢?
首先 除基取余法 肯定不行,除基取余法的本质是通过右移拿数,而我们得出结论,小数可能存在无限位的小数,所以右移肯定行不通。那么我们不如左移。
由此引入乘基取整法
而乘基取整法的本质就是把数往左移。如10进制0.2 ,我们左移一位整数位为2,且小数位为0,说明改数为: 2 * 10-1
我们可以推广,当左移N位数时,得到的数为:

dn * b-n (b为基数,b包含全部d)

由此我们得到 小数10进制转换2进制和16进制的方法
即:把小数乘以基数,取其整数,其整数代表 dn * b-n ,循环往复,直至小数位为0 或精度已经足够。

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