二进制算法_类二进制算法
二进制算法由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“类二进制算法”。
二进制乘法和加法都是通过对二进制数的移位来实现的,移位相当于×2,计算机算根据给出的加法式子与乘法式子算要移多少位。扩展:
1、二进制数据的表示法
二进制数据也是采用位置计数法,其位权是以2为底的幂。例如二进制数据110.11,其权的大小顺序为2^2、2^1、2^0、2^-
1、2^-2。对于有n位整数,m位小数的二进制数据用加权系数展开式表示,可写为:
(a(n-1)a(n-2)…a(-m))2=a(n-1)×2^(n-1)+a(n-2)×2^(n-2)+……+a(1)×2^1+a(0)×2^0+a(-1)×2^(-1)+a(-2)×2^(-2)+……+a(-m)×2^(-m)
二进制数据一般可写为:(a(n-1)a(n-2)…a(1)a(0).a(-1)a(-2)…a(-m))2。
注意:
1.式中aj表示第j位的系数,它为0和1中的某一个数。
2.a(n-1)中的(n-1)为下标,输入法无法打出所以用括号括住,避免混淆。
3.2^2表示2的平方,以此类推。
【例1102】将二进制数据111.01写成加权系数的形式。
解:(111.01)2=(1×2^2)+(1×2^1)+(1×2^0)+(0×2^-1)+(1×2^-2)
二进制和十六进制,八进制一样,都以二的幂来进位的。
二进制数据的算术运算的基本规律和十进制数的运算十分相似。最常用的是加法运算和乘法运算。
1.二进制加法
有四种情况: 0+0=0
0+1=1
1+0=1
1+1=10 进位为1
【例1103】求(1101)2+(1011)2 的和
解:
1 1 0
1+ 1 0 1 1
-------------------
1 1 0 0 0
2.二进制乘法
有四种情况: 0×0=0
1×0=0
0×1=0
1×1=1
【例1104】求(1110)2 乘(101)2 之积
解:
1 1 1 0
× 1 0 1
-----------------------
1 1 1 0
0 0 0 0
1 1 1 0
-------------------------0 0 0 1 1 0
(这些计算就跟十进制的加或者乘法相同,只是进位的数不一样而已,十进制的是到十才进位这里是到2就进了)
3.二进制减法
0-0=0,1-0=1,1-1=0,10-1=1。
4.二进制除法
0÷1=0,1÷1=1。[1][2]
5.二进制拈加法
拈加法二进制加减乘除外的一种特殊算法。
拈加法运算与进行加法类似,但不需要做进位。此算法在博弈论(Game Theory)中被广泛利用。
十进制数转换为二进制数、八进制数、十六进制数的方法:
二进制数、八进制数、十六进制数转换为十进制数的方法:按权展开求和法
1.二进制与十进制间的相互转换:
(1)二进制转十进制
方法:“按权展开求和”
例:(1011.01)2 =(1×2^3+0×2^2+1×2^1+1×2^0+0×2^(-1)+1×2^(-2))10
=(8+0+2+1+0+0.25)10
=(11.25)10
规律:个位上的数字的次数是0,十位上的数字的次数是1,......,依奖递增,而十
分位的数字的次数是-1,百分位上数字的次数是-2,......,依次递减。
注意:不是任何一个十进制小数都能转换成有限位的二进制数。
(2)十进制转二进制
· 十进制整数转二进制数:“除以2取余,逆序排列”(除二取余法)
例:(89)10 =(1011001)2 89 ……44 ……022 ……011 ……15 ……1 2 ……0
· 十进制小数转二进制数:“乘以2取整,顺序排列”(乘2取整法)
例:(0.625)10=(0.101)2
0.625X2=1.25 ……1
0.25 X2=0.50 ……0
0.50 X2=1.00 ……1
2.八进制与二进制的转换:
二进制数转换成八进制数:从小数点开始,整数部分向左、小数部分向右,每3位为一组用一位八进制数的数字表示,不足3位的要用“0”补足3位,就得到一个八进制数。
八进制数转换成二进制数:把每一个八进制数转换成3位的二进制数,就得到一个二进制数。
八进制数字与二进制数字对应关系如下:
000-> 0 100-> 4
001-> 1 101-> 5
010-> 2 110-> 6
011-> 3 111-> 7
例:将八进制的37.416转换成二进制数:7 . 4 1 6
011 111 .100 001 110
即:(37.416)8 =(11111.10000111)2
例:将二进制的10110.0011 转换成八进制:
0 1 0 1 1 0.0 0 1 1 0 06.1 4
即:(10110.011)2 =(26.14)8
3.十六进制与二进制的转换:
二进制数转换成十六进制数:从小数点开始,整数部分向左、小数部分向右,每4位为一组用一位十六进制数的数字表示,不足4位的要用“0”补足4位,就得到一个十六进制数。
十六进制数转换成二进制数:把每一个十六进制数转换成4位的二进制数,就得到一个二进制数。
十六进制数字与二进制数字的对应关系如下:
0000-> 0 0100-> 4 1000-> 8 1100-> C
0001-> 1 0101-> 5 1001-> 9 1101-> D
0010-> 2 0110-> 6 1010-> A 1110-> E
0011-> 3 0111-> 7 1011-> B 1111-> F
例:将十六进制数5DF.9 转换成二进制: D F . 9
0101 1101 1111 .1001
即:(5DF.9)16 =(10111011111.1001)2
例:将二进制数1100001.111 转换成十六进制:
0110 0001 . 1110 1 . E
即:(1100001.111)2 =(61.E)16
2.二进制数的逻辑运算
• 逻辑运算结果是“1”或“0”,它代表了所要研究问题的两种状态或可能性,赋予逻辑含义,可以表示“真”与“假”、“是”与“否”、“有”与“无”。
• 计算机中,只有用“1”或“0”两种取值表示的变量,即具有逻辑属性的变量称为逻辑变量。
• 逻辑运算与算术运算的主要区别是:逻辑运算是按位进行的,位与位之间不像加、减运算那样有进位或借位的联系。• 逻辑运算包括三种基本运算:逻辑加法、逻辑乘法和逻辑否定。此外,还可以导出异或运算、同或运算以及与或非运算等。下面介绍4种运算:
(1)逻辑加法(又称“或”运算)A.运算符
逻辑加法通常用符号“+”或“∨”来表示。设逻辑变量A、B、C,它们的逻辑加运算关系是:A+B=C 或者写成 A∨B=C,读作“A或B等于C”。B.逻辑加运算规则 A + B = C A ∨ B = C 0 + 0 = 0 0 ∨ 0 = 0 0 + 1 = 1 0 ∨ 1 = 1 1 + 0 = 1 1 ∨ 0 = 1 1 + 1 = 1 1 ∨ 1 = 1 结论:在给定的逻辑变量中,只要有一个为1,“或”运算的结果就为1。
(2)逻辑乘法(又称“与”运算)A.运算符
逻辑乘法通常用符号“×”或“∧”或“Ÿ”表示。
设逻辑变量A、B、C,它们的逻辑乘运算关系是:AB = C,A ∧ B = C,AŸB = C。读作“A与B等于C”。B.逻辑乘运算规则
A × B = C A ∧ B = C AŸB = C 0 × 0 = 0 0 ∧ 0 = 0 0Ÿ0 = 0 0 × 1 = 0 0 ∧ 1 = 0 0Ÿ1 = 0 1 × 0 = 0 1 ∧ 0 = 0 1Ÿ0 = 0 1 × 1 = 1 1 ∧ 1 = 1 1Ÿ1 = 1 结论:逻辑乘法是“与”的含义,它表示只有参加运算的逻辑变量取值都为1时,逻辑乘积才等于1。(3)逻辑否定(非运算)A.运算符
逻辑非运算是在逻辑变量的上方加一横线。B.运算规则
设逻辑变量A,其运算规则为: A A 0 1 读作0非等于1 1 0 读作1非等于0(4)异或逻辑运算 A.运算符
“异或”运算通常用符号“⊕”表示。B.运算规则
按位加,即不带进位的加法。
设逻辑变量A、B、C,它的运算规则为:A ⊕B = C,读作:“A同B‘异或’等于C”。A⊕B = C 0⊕0 = 0 0⊕1 = 1 1⊕0 = 1 1⊕1 = 0 结论:在A、B两个逻辑变量中,只要两个逻辑变量的值相同,“异或”运算的结果就为0;当两个逻辑变量的值不同时,“异或”运算的结果才为1。
以上介绍的四种逻辑运算在汇编和高级语言里,常用“OR”表示“或”,“AND”表示“与”,“NOT”表示“非”,“XOR”表示“异或”。
需要指出的是,计算机可以一次对不同种类的多个逻辑变量进行运算,它们将按照逻辑运算符的优先顺序进行,最终出现一个结果“真”(用1表示)或“假”(用0表示)。