为什么要⽤到⼆进制?进制及其转换
为什么要⽤到⼆进制?
数字电路⾮常⼴泛,⼩到逻辑门电路,⼤到超⼤规模集成电路,⼿机,电脑,智能设备……数字信号即可以表⽰数字,也可以表⽰⾮数值的信息,如⽂字,声⾳,图⽚,视频。如何将这些⾮数值类的信息 变成 ⼆进制信号呢?这就涉及到编码制度,即将信息通过编码的⽅式转成⼆进制值,如 MP3、MP4、midi、jpg、gif 等等
1. 从可⾏性来说,采⽤⼆进制,只有 0 和 1 两个状态,能够表⽰ 0 和 1 两种状态的电⼦器件有很多,⽐如开关的接通和断开、晶体管
的导通和截⽌、磁原件的正负剩磁、电位电平的⾼低等都可以表⽰ 0 和 1 两个数。使⽤⼆进制,电⼦器件具有实现的可⾏性。
2. 从运算的简易性来说,⼆进制的运算法则少,运算简单,使计算机运算器的硬件结构⼤⼤简化(⼗进制乘法九九⼝诀有 55 条公式,
⽽⼆进制乘法只有四条规则)。
3. 从逻辑上讲,由于⼆进制 0 和 1 正好和逻辑代码假和真相对应,有逻辑代数的理论基础,⽤⼆进制表⽰⼆值逻辑很⾃然。 -摘⾃⼗进制是“⼗进”,采⽤的是“个/⼗/百/千/万…”的进位递增
⼆进制是“⼆进”,采⽤的是“1/2/4/8/16/…”的进位递增
基数和位权在⼗进制系统中(基数 10),数4327.13表⽰ ,其中的10 就是我们所说的基数,基数在不同数制转换中起着重要作⽤。我们⽤数字我们知道多位数有很多位,有⼗位、百位和千位,处在每个位上的单位1表⽰的数值⼤⼩不同,⼗位上的数字1代表 10 ,百位上的数字 1 代表 100,以此类推,故我们称为位权 ,也称⽐重 (以10 进制为例)
常见的进制
计算机中的任何数据都可以⽤⼀串 0 或 1 来表⽰,但考虑到⼆进制数位太长,所以我们也可以采⽤⼋进制和⼗六进制来表⽰数值数据。为了避免出现误会,在给出⼀个数的同时就必须指明这个数的数制,例如:(1010)、(1010)、(1010)、
(1010)所代表的数值就不同。除了⽤下标来表⽰不同的数制以外,在计算机中还常⽤后缀字母来表⽰不同的数制。后缀 B 表⽰这个数是⼆进制数(Binary);后缀 Q 表⽰这个数是⼋进制数(Octal),本来⼋进制数的英⽂单词的第⼀个字母应当是 O,因为字符 O 与数字 0 太容易混淆,所以常使⽤字符 Q 作为⼋进制数的后缀;后缀 H 表⽰这个数是⼗六进制数(Hexadecimal);⽽后缀
D 表⽰这个数是⼗进制数(Decimal)。⼗进制数在书写时后缀 D 可以省略,其他进制在书写时后缀⼀般不可省略。例如:有 4 个数分别为 375D、101B、76Q、A17H,从后缀字母就可以知道它们分别是⼗进制数、⼆进制数、⼋进制数和⼗六进制数。
程序员们更喜欢采⽤程序设计语⾔的记号来表⽰不同进制的数,这就是前缀表⽰法,例如:在 C 语⾔中,⼋进制常数以前缀 0 开始,⼗六进制常数以前缀 0x 开始。
(4×10)+3(3×10)+2(2×10)+1(7×10)+0(1×10)+−1(3×10)−210n 281016
⼗进制
特点:有 10 个基数:0、1、2、3、4、5、6、7、8、9写法:⼆进制
特点:有两个基数:0、1写法:⼋进制
特点:有⼋个基数:0、1、2、3、4、5、6、7写法:⼗六进制特点:有⼗六个基数:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
写法:其实0~9 和 a~f 都只是符号⽽已,如果采⽤ n 进制,那么我们就⽤到 n 种符号来排列组合即可,当然,符号是可以重复的进制转化
整数转换转换 正整数 的进制的有⼀个简单算法,就是通过⽤⽬标基数作长除法;余数给出从最低位开始的“数字”。
a 进制转化为
b 进制,除 r 取余数,直⾄商为零,余数倒序排序
例如,1020304 从 10 进制转到 7 进制:
(D )——Decimal
或(D )=1010D ⋅10i =−m ∑
n −1
i i (B )——Binary 或(B )=22B ⋅2i =−m ∑
n −1
i i
(O )——Octal
或(O )=88=i =−m ∑n −1O ⋅8i i
(H )——Hexadecimal 或(H )=1616=i =−m ∑n −1
H ⋅16i i
再如,10110111 从 2 进制到 5 进制:(注意:b 要先转换成 a 的进制 )
记忆⼝诀:除 b 取余,逆序排列
其他进制转换与⼆进制的相互转换
⼆进制转换为⼋进制,采⽤“3 位并 1 位”,按从右向左⽅向,每 3 位⼆进制位⼀组,最⾼位不⾜ 3 位,添 0 补⾜ 3 位,然后将各组 3位⼆进制数加权展开,得到⼋进制数。
⼩数转换二进制转换方法的口诀
转换⼀个“⼗进制” ⼩数,可以⽤重复乘法,将整数部分作为“数字”。不幸的是有限⼩数不⼀定转换成为有限⼩数,例如 0.1A4C 从16 进制转换到 9 进制:
记忆⼝诀:进1取整,顺序排列 (1 在这⾥指的是位权)
进制的简单运算
1. ⼆进制加法:1+0=1、1+1=10、11+10=101、111+111=1110
2. ⼆进制减法:1-0=1、10-1=1、101-11=10、1100-111=101
1. ⼋进制加法:3+4=7、5+6=13、75+42=137、2427+567=3216
2. ⼋进制减法:6-4=2、52-27=23、307-141=146、7430-1451=5757
1. ⼗六进制加法:6+7=D、18+BA=D2、595+792=D27、2F87+F8A=3F11
2. ⼗六进制减法:D-3=A、52-2F=23、E07-141=CC6、7CA0-1CB1=5FEF
乘法和除法相对来说⽐较复杂,涉及到逻辑门运算,属于计算机组成原理中的内容,先挖个坑,⽇后再填
⼆进制是如何将加减乘除变换为加法实现的?总结
⼗进制(D),⼆进制(B),⼋进制(O),⼗六进制(H)
以上内容只是说了进制转换中如何计算的问题,是⼀种机械化的理解。以前见到过⼀篇关于进制的⽂章,写的很好,可我现在不到了,遗憾。进⼀步⽤代码理解进制
要注意的⼏个地⽅:
1. 在进⾏进制转换时,长除法中的除数的进制和被除数的进制要保持⼀致
2. 从⼩数点位置开始,整数部分向左,⼩数部分向右,每四位⼆进制为⼀组⽤⼀位⼗六进制的数字来表⽰,不⾜四位的⽤ 0 补⾜
3. ⼗进制转其他进制:整数部分⽤除基取余法,⼩数部分⽤乘基取整法,然后将整数与⼩数部分拼接成⼀个数作为转换的最后结果其他数制转为 ⼗进制 ,套公式即可(b=10)。⼀般来讲,b 进制系统中的数有如下形式:
(a a ...a a .c c c ...)=n n −110123b a b +∑k =0n k k c b ∑k =1∞k −k

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。