范文一:二进制运算法则
二进制运算法则
莱布尼兹也是第一个认识到二进制记数法重要性的人,并系统地提出了二进制数的运算法则。二进制对200多年后计算机的发展产生了深远的影响。他于1716年发表了《论中国的哲学》一文,专门讨论八卦与二进制,指出二进制与八卦有共同之处。
目录
德国著名的数学家和哲学家莱布尼兹,对帕斯卡的加法机很感兴趣。于是,莱布尼兹也开始了对计算机的研究。
编辑本段
研究过程 1672年1月,莱布尼兹搞出了一个木制的机器模型,向英国皇家学会会员们做了演示。但这个模型只能说明原理,不能正常运行。此后,为了加快研制计算机的进程,莱布尼兹在巴黎定居4年。在巴黎,他与一位著名钟表匠奥利韦合作。他只需对奥利韦作一些简单的说明,实际的制造工作就全部由这位钟表匠独自去完成。1974年,最后定型的那台机器,就是由奥利韦一人装配而成的。莱布尼兹的这台乘法机长约1米,宽30厘米,高25厘米。它由不动的计数器和可动的定位机构两部分组成。整个机器由一套齿轮系统来传动,它的重要部件是阶梯形轴,便于实现简单的乘除运算。 莱布尼兹设计的样机,先后在巴黎,伦敦展出。由于他在计算设备上的出色成就,被选为英国皇家学会会员。1700年,他被选为巴黎科学院院士。
莱布尼兹在法国定居时,同在华的传教士白晋有密切联系。白晋曾为康熙皇帝讲过数学课,他对中国的易经很感兴趣,曾在1701年寄给莱布尼兹两张易经图,其中一张就是有名的“伏羲六十四卦方位圆图”。莱布尼兹惊奇地发现,这六十四卦正好与64个二进制数相对应。莱布尼兹认为中国的八卦是世界上最早的二进制记数法。为此,
莱布尼兹非常向往和崇尚中国的古代文明,他把自己研制的乘法机的复制品赠送给中国皇帝康熙,以表达他对中国的敬意。
编辑本段
法则 二进制的运算算术运算二进制的加法:0+0=0,0+1=1 ,1+0=1, 1+1=10(向高位进位);即7=111
10=1010 3=11
二进制的减法:0-0=0,0-1=1(向高位借位) 1-0=1,1-1=0 (模二加运算或异或运算) ;
二进制的乘法:0 * 0 = 0 0 * 1 = 0,1 * 0 = 0,1 * 1 = 1 二进制的除法:0÷0 = 0,0÷1 = 0,1÷0 = 0 (无意义),1÷1 = 1 ;
逻辑运算二进制的或运算:遇1得1 二进制的与运算:遇0得0 二进制的非运算:各位取反。
编辑本段
二进制与其他进制的转换
首先我们得了解一个概念,叫“权”。“权”就是进制的基底的n次幂。如二进制的权就是(2)*n了,十进制的权就是(10)*n,看到十进制我们就很自然的想到科学计算法中的(10)*n,对吧?有了权这个定义之后,我们就可以随便把一个进制的数转化成另一个进制的数了。日常生活中,由于电脑的字节,汉字西文的字节的原因,二进制最常见的转换是八进制,十六进制,三十二进制,当然还有十进制。
二进制转换成十进制的原则是:基数乘以权,然后相加,简化运算时可以把数位数是0的项不写出来,(因为0乘以其他不为0的数都是0)。小数部分也一样,但精确度较少。
二进制与八进制的转换:采用“三位一并法”(是以小数点为中心向左右两边以每三位分组,不足的补上0)这样就可以轻松的进行转换。
二进制与十六进制的转换:采用的是“四位一并法”,就如二进制与八进制的转换一样。
范文二:二进制的运算法则
1.2 微型计算机运算基础
1.2.1 二进制数的运算方法
电子计算机具有强大的运算能力,它可以进行两种运算:算术运算和逻辑运算。
1.二进制数的算术运算
二进制数的算术运算包括:加、减、乘、除四则运算,下面分别予以介绍。
(1)二进制数的加法
根据“逢二进一”规则,二进制数加法的法则为:
0+0=0
0+1=1+0=1
1+1=0 (进位为1)
1+1+1=1 (进位为1)
例如:1110和1011相加过程如下:
(2)二进制数的减法
根据“借一有二”的规则,二进制数减法的法则为:
0-0=0
1-1=0
1-0=1
0-1=1 (借位为1)
例如:1101减去1011的过程如下:
(3)二进制数的乘法
二进制数乘法过程可仿照十进制数乘法进行。但由于二进制数只有0或1两种可能的乘数位,导致二进制乘法更为简单。二进制数乘法的法则为:
0×0=0
0×1=1×0=0
1×1=1
例如:1001和1010相乘的过程如下:
由低位到高位,用乘数的每一位去乘被乘数,若乘数的某一位为1,则该次部分积为被乘数;若乘数的某一位为0,则该次部分积为0。某次部分积的最低位必须和本位乘数对齐,所有部分积相加的结果则为相乘得到的乘积。
(4)二进制数的除法
二进制数除法与十进制数除法很类似。可先从被除数的最高位开始,将被除数(或中间余数)与除数相比较,若被除数(或中间余数)大于除数,则用被除数(或中间余数)减去除数,商为1,并得相减之后的中间余数,否则商为0。再将被除数的下一位移下补充到中间余数的末位,重复以上过程,就可得到所要求的各位商数和最终的余数。
例如:100110÷110的过程如下:
所以,100110÷110=110余10。
2.二进制数的逻辑运算
二进制数的逻辑运算包括逻辑加法(“或”运算)、逻辑乘法(“与”运算)、逻辑否定(“非”运算)和逻辑“异或”运算。
(1)逻辑“或”运算
又称为逻辑加,可用符号“+”或“∨”来表示。逻辑“或”运算的规则如下:
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。仅当两个变量都为0时,或运算的结果才为0。计算时,要特别注意和算术运算的加法加以区别。
(2)逻辑“与”运算
又称为逻辑乘,常用符号“×”或“· ”或“∧”表示。“与”运算遵循如下运算规则:
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
可见,两个相“与”的逻辑变量中,只要有一个为0,“与”运算的结果就为0。仅当两个变量都为1时,“与”运算的结果才为1。
(3)逻辑“非”运算
又称为逻辑否定,实际上就是将原逻辑变量的状态求反,其运算规则如下:
可见,在变量的上方加一横线表示“非”。逻辑变量为0时,“非”运算的结果为1。逻辑变量为1时,“非”运算的结果为0。
(4)逻辑“异或”运算
“异或”运算,常用符号“
1
10=0 或
01=1 或
00=1 或 11=0 或 10=0
1=1 0=1 1=0 ”或
“”来表示,其运算规则为:
可见:两个相“异或”的逻辑运算变量取值相同时,“异或”的结果为0。取值相异时,“异或”的结果为1
以上仅就逻辑变量只有一位的情况得到了逻辑“与”、“或”、“非”、“异或”运算的运算规则。当逻辑变量为多位时,可在两个逻辑变量对应位之间按上述规则进行运算。特别注意,所有的逻辑运算都是按位进行的,位与位之间没有任何联系,即不存在算术运算过程中的进位或借位关系。
范文三:二进制的四则运算法则
二进制的四则运算法则
加法法则: 0+0=0,0+1=1+0=1,1+1=10
减法,当需要向上一位借数时,必须把上一位的1看成下一位的(2)10。
减法法则: 0 - 0 = 0 1 - 0 = 1 1 - 1 = 0 0 - 1 = 1 有借位,借1当(10) 看成2 0 - 1 - 1 = 0 有借位 1 - 1 - 1 = 1 有借位。
乘法法则: 0×0=0,0×1=1×0=0,1×1=1
除法应注意: 0?0 = 0 0?1 = 0 1?0 = 0 (无意义)
除法法则: 0?1=0,1?1=1
二进制与十进制的算法格式相同,只不过十进制是逢十进一,而二进制是逢二进一。
编辑本段“满二进一”的算法二进制的逻辑运算
二进制的或运算:遇1得1 二进制的与运算:遇0得0 二进制的非运算:各位取反
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统。
二进制数据的表示法
二进制数据也是采用位置计数法,其位权是以2为底的幂。例如二进制数据110.11,逢2进1,其权的大小顺序为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、执行下列地进制逻辑乘运算(即逻辑与运算)01011001 10100111其运算结果是多少,(要过程) 2、执行下列二进制算术加运算11001001+00100111其运算结果是什么,(要过程)
3、执行下列逻辑或运算01010100 V 10010011其运算结果是什么,(要过程) 4、地进制运算1110*1101的结果是什么,要过程
1、01011001?10100111,00000001
、11001001,00100111,11110000 2
3、01010100?10010011,11010111
4、1110*1101,10110110
“与”(and)运算
又称为逻辑乘运算,其运算符号通常用AND、?、?或?等表示。两个变量的“与”运算的运算规则如下:
0?0=0;0?1=0;1?0=0;1?1=1
即当两个变量中任一变量取0值时,其运算结果为0,只有当两个变量都是1,结果才是1。如果是多个变量,也是一样,只要有一个是0,则结果就是0,只有全部变量都是1,结果才是1
“或”运算(OR)
又称为逻辑加运算,其运算符号为OR、?、?或,等。两个变量的“或”运算规则如下: ,0=0;0,1=1;1+0=1;1+1=1 0
即当即当两个变量中任一变量取1值时,其运算结果为1,只有当两个变量都是0,结果才是0。如果是多个变量,也是一样,只要有一个是1,则结果就是1,只有全部变量都是0,结果才是0
你可以联想我们常用的算术加法和算术乘法,他们类似。
多位数的逻辑运算规则:
两个数小数点对齐,相同位置上的数字进行“与”或“或”运算,然后把各位上的数字组合起来就是结果。
至于二进制数的算术加法运算和十进制数的算术加法运算类似,规则是: 小数点对齐,相同位置上数字相加,逢二进1。
比如1+1,10;1+0,1;
乘法也和十进制数的算术乘法运算类似类似
范文四:汇编实现二进制的除法运算算法
汇编实现多字节二进制除法运算算法
2011-08-17 20:02:25| 分类: | 标签: |字号大中小 订阅
二进制的除法通过重复减法运算实现即通过重复”从被除数的高位依次取出每一位, 被取出的数据加上上次
的减法结果, 然后减去除数”的处理, 求出除法结果
假设:
被除数 R0R1 (占用4字节)
除数 R2R3 (占用4字节)
商 R0R1 (占用4字节) ******************* 这里需要说明, 此程序执行
结束以后, 商的结果保存在被除数中 ************
余数 R4R5 (占用4字节)
移位次数 R6L (占用1字节) ******************* 这里需要说明, 其数值根据
被除数的位数定义, 这里为32 *************
操作流程如下:
a) 余数清零
b) 判断除数是否为0, 如果为0, 是错误, 不再往下执行.
c) 设定移位次数
d) 被除数左移1位, 溢出的最高位保存在进位标志C中, 再把余数左移1位, 把C(被除数溢出的最高位)
放入余数的最低位
e) 余数与除数比较大小(余数减去除数):
余数 ≧ 除数(减法结果为正)时, 被除数的最低位, 赋值 1
余数
f) 定移位次数递减
g) 直到移位次数为0,否则重复d) ~ f)
程序代码以renesas为例
MOV.W #0,R4 ;clear R4
MOV.W #0,R5 ;clear R5
CMP.W R4,R2
BNE LBL1 ;R4,R2 不相等, 程序跳至LBL1
CMP.W R4,R3
BEQ ERR ; R4,R3 相等, 程序跳至ERR
LBL1:
MOV.B #32,R6L ;set byte counter
LBL2:
SHLL R1L ;被除数左移1位, 最高位放入C
ROTXL R1H
ROTXL R2H
ROTXL R1H
ROTXL R5L ;余数左移1位, 移入C
ROTXL R5H
ROTXL R4H
ROTXL R4H
BSET #0,R1L ; 被除数的最低位, 赋值 1
SUB.W R3,R5 ;余数 减去 除数
SUBX.B R2L,R4L
SUBX.B R2H,R4H
BCC LBL3 ; 余数 ≧ 除数(减法结果为正) , 程序跳至LBL3
ADD.W R3,R5 ; 余数
ADDX.B R2L,R4L
ADDX.B R2H,R4H
BCLR #0,R1L ; 被除数的最低位, 赋值 0
LBL3:
DEC.B R6L ; 定移位次数递减
BNE LBL2 ; 移位次数为不0, 程序跳至LBL2
BRA EXIT ; 程序跳至EXIT
ERR: ; 添加除数为0 的处理
EXIT:
RTS
范文五:二进制除法(规律)
模2除法
编辑
模2除法与算术除法类似,但每一位除的结果不影响其它位,即不向上一位借位,所以实际上就是异或。在循环冗余校验码(CRC )的计算中有应用到模2除法。
【例1】:1111000除以1101:
【例2】被校验的数据M(x)=1000,其选择生成多项式为G(x)=x^3+x+1,该数据的循环冗余校验和应为多少?
G(x)=x^3+x+1对应的二进制数为1011,且G(x)中含3个项式,生成多项式为4位二进制,由CRC 规则应该取(4-1)=3位(校验和) ,所以可以预加上3位得到1000B*2^3=1000 000B; 1000 000B(被除数)对1011(除数)做模2除法,得到的余数便是101B(即CRC 校验和) ,所以该数据的循环冗余校验后的数据应为1000 000B+101B=1000101B。 想知道模2除法,只需要知道什么是异或运算就很容易算出。 计算机中,异或逻辑表示为: (记忆方法:同为0异为1) 真^假=真
假^真=真
假^假=假
真^真=假
或者
1^1=0
0^0=0
1^0=1
0^1=1
计算机语言用1表示真,用0表示假,所以两个字节按位异或如下
例如
00000000 ⊕ 00000000 = 00000000 11111111 ⊕ 00000000 = 11111111 00000000 ⊕ 11111111 = 11111111 11111111 ⊕ 11111111 = 00000000 00001111 ⊕ 11111111 = 11110000