进制以及进制之间的转换

浅谈进制

进制 二进制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)





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

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值