cpu不是只会作加法运算么,那么数学中的乘法除法怎么弄?
1个回答
展开全部
曾经是,现在不是了。
从80486时代开始,CPU就有了专用的 乘法器/移位器 运算单元,
因此计算乘法并非是在 CPU 内作多次加法!
比如笔算十进制 12*23,列竖式的话
. 12
* 23
----
. 36
.24
----
.276
是拆成 12*3=36 和 12*2=24 ,然后将24移位,再相加,得276 。
减法是采用补码进行的一种运算,是特殊的加法。
至于除法,这个我实在没想清楚。不过,据说现在的cpu也有除法器了,听说也是移位器,具体的实在不清楚了,我也不是计算机专业的,汇编没学过啊
补充:刚查资料,通过汇编说明乘除法:
乘法:
被乘数移位加。
模拟 16bits 乘法用 x86 汇编语句描述如下:
xor eax,eax
mov ebx,16bits data
mov edx,16bits data
mov ecx,20H
clc
@@1:
shl eax,1
rol edx,1
jnc @@2
add eax,ebx
@@2:
loop @@1
next:
除法:
被除数移位减。。。
模拟除法用 x86 汇编语句描述如下:
xor eax,eax
mov ebx,divisor
mov edx,dividend
mov ecx,20H
@@1:
shld eax,edx,1
cmp eax,ebx
jl @@2
sub eax,ebx
inc edx
@@2:
loop @@1
next:
; 乘法的被乘数和乘数不需要区分
; 除法的被除数和除数必须区分,这和串连移位所使用的寄存器有关。余数存储在 EAX,商存储在 EDX
如果学过一点汇编,应该能看懂~
从80486时代开始,CPU就有了专用的 乘法器/移位器 运算单元,
因此计算乘法并非是在 CPU 内作多次加法!
比如笔算十进制 12*23,列竖式的话
. 12
* 23
----
. 36
.24
----
.276
是拆成 12*3=36 和 12*2=24 ,然后将24移位,再相加,得276 。
减法是采用补码进行的一种运算,是特殊的加法。
至于除法,这个我实在没想清楚。不过,据说现在的cpu也有除法器了,听说也是移位器,具体的实在不清楚了,我也不是计算机专业的,汇编没学过啊
补充:刚查资料,通过汇编说明乘除法:
乘法:
被乘数移位加。
模拟 16bits 乘法用 x86 汇编语句描述如下:
xor eax,eax
mov ebx,16bits data
mov edx,16bits data
mov ecx,20H
clc
@@1:
shl eax,1
rol edx,1
jnc @@2
add eax,ebx
@@2:
loop @@1
next:
除法:
被除数移位减。。。
模拟除法用 x86 汇编语句描述如下:
xor eax,eax
mov ebx,divisor
mov edx,dividend
mov ecx,20H
@@1:
shld eax,edx,1
cmp eax,ebx
jl @@2
sub eax,ebx
inc edx
@@2:
loop @@1
next:
; 乘法的被乘数和乘数不需要区分
; 除法的被除数和除数必须区分,这和串连移位所使用的寄存器有关。余数存储在 EAX,商存储在 EDX
如果学过一点汇编,应该能看懂~
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询