双字节二进制无符号数乘法

合集下载

计算机 乘法

计算机 乘法

计算机乘法
计算机乘法是计算机进行数值运算的一种基本操作,它可以对两个数进行乘法运算,并得出它们的积。

计算机乘法使用的是二进制数系统,每个数字只有0和1两种状态。

计算机乘法的实现是通过使用逻辑门电路和寄存器进行的。

逻辑门电路可以实现二进制位的逻辑运算,而寄存器则可以存储二进制数。

计算机乘法的实现可以分为两种方法:加法器法和移位法。

在加法器法中,计算机会将两个数分别转换为二进制数,并使用加法器进行逐位相加,最终得出它们的积。

在移位法中,计算机会将其中一个数进行移位,并使用加法器进行逐位相加,最终得出它们的积。

计算机乘法是计算机进行数值运算的重要操作之一,它在各种应用程序中都有广泛的应用,例如计算机图形学、科学计算等领域。

为了提高计算机的乘法运算速度,计算机硬件厂商会研发出各种优化方法,例如使用多核处理器、SIMD指令集等。

- 1 -。

符号定点二进制小数(Qnformat)乘法原理

符号定点二进制小数(Qnformat)乘法原理

符号定点⼆进制⼩数(Qnformat)乘法原理⽆符号整数⼆进制乘法很简单,基本上就是补位到位数相同,然后乘数中的每⼀位与另⼀个乘数的每⼀位做AND(与)运算,然后移位累加就可以了。

那么把⽆符号⼆进制整数乘法拓展到⽆符号⼆进制⼩数乘法,就涉及⼩数格式的问题。

这⾥说定点⼆进制⼩数格式:Qn format;⼩数点位于第 n 位元之右侧,称为Qn 格式。

Q3.3就是3位整数3位⼩数。

乘数A是Qm.n整数部分m位,⼩数部分n位; 乘数B是Qo.p,整数部分o位,⼩数部分p位;那么积A*B 就是Q(m+o).(n+p),整数部分(m+o)位,⼩数部分(n+p)位;按照⽆符号⼆进制整数乘法进⾏,然后把输出从低到⾼按照位数划分整数和⼩数部分就可以得到正确的结果。

现在把⽆符号⼆进制整数乘法拓展到考虑符号的整数⼆进制乘法,这就涉及⼆进制符号位,补位的问题了。

考虑符号⼆进制整数,最⾼位是符号位,1表⽰负数,0表⽰正数。

负数的补码是所有位取反(反码)然后加1,正数的补码是正数本⾝。

1111是负数,它表⽰-1,它的补码是0001(反码加⼀后最⾼位溢出舍去),所以负数⼆进制的数值是补码视为正数的相反数。

符号位权位-2^(n-1)——n为⼆进制数的位数,计算符号⼆进制数的⼗进制也可以⽤权来计算。

(1111)2=1*(-2^3)+1*2^2+1*2^1+1*2^0=-8+4+2+1=-1;另外还需强调⼀点,就是符号⼆进制数的补位。

我们都知道不同位数⽆符号⼆进制数进⾏运算需要在位数⼩的数前⾯补0,例如⽆符号数1011和100相加,变成1011和0100相加,因为显然,100和0100, 00100, 000100都是相等的,⾼位补0产⽣0*2^(n),不对原始数值有影响。

但是负数⼆进制数的补位是要在⾼位补1:直接解释,假设仅要增补1位,如果不是1就改变了负数为正数。

由此递推到补n位,都是补1;也可以从权的⾓度来说明……符号⼆进制数的计算需要考虑每个乘数分别的符号,可以分为:正数*正数,正数*负数,负数*正数,负数*负数正数*正数:正常运算就⾏了,依次与然后移位累加。

微机原理第1章-数制

微机原理第1章-数制

无符号二进制数的除法运算有可能产生溢出,当除数较小时,运算
结果可能超出微处理器为除法运算结果准备的存储空间,从而溢出 。除法溢出时微处理器会产生溢出中断,提醒程序员程序出错。
33
知识点1.3.3
带符号整数的表示方法:
原码、反码、补码
34
带符号数的表示方法
【例1-17】 十进制 +1 -1 +79 -79 0 0 二进制 +1 -1 + 1001111 - 1001111 0 0000000 1 0000000 符号数值化 0 0000001 1 0000001 0 1001111 1 1001111
15
2. 十进制数到非十进制数的转换
转换为二进制, 对整数:除2取余; 对小数:乘2取整。
转换为十六进制, 对整数:除16取余; 对小数:乘16取整。
整数部分 小数部分
余数
低位
高位
2 115 2 57 2 28 2 14 2 7 2 3 2 1 0
1 1 0 0 1 1 1
高位
0.75 2 × 1.5 0.5 2 × 1.0
例如:(3FC.6)H =3×162+F×161+C×160+6×16-1 =(1020.375)D
知识点1.2.2
数制转换
14
1. 非十进制转换为十进制
按权表达式展开,再按十进制运算规则求和,即可得到对应的十进制数。
例: (1101.101)2=23+22+2-1+2-3=(13.625)10 (3FC.6)H=3×162+15×161+12×160+6×16-1=(1020.375)D
678.34=6×102+7×101+8×100 +3×10-1+4×10-2

二进制数

二进制数
(3)用同样的方法倒数第三位要向它们的上一位借“1”(同样是当“2”),但同样已向它的下一位(倒 数第二位)借给“1”(此时也是真实的“1”),所以最终得值也为“0”。
(4)被减数的倒数第四位尽管与前面的几位一样,也为“0”,但它所对应的减数倒数第四位却为“0”, 而不是前面几位中对应的“1”,它向它的高位(倒数第五位)借“1”(相当于“2”)后,在借给了倒数第四 位“1”(真实的“1”)后,仍有“1”余,1 –0=1,所以该位结果为“1”。
例如:123D、1011B、123Q、AB9H、0.11D、0.11B、0.11Q、0.11H。
二进制数
而十进制转换为其它进制就比较难办了哦,但方法是有的,而且不少方法。在此介绍一种比较常用的,便于 大家掌握。
十进制转换为二进制技巧
只能举例了,文字说不清的,通常将一个十进制数的整数部分和小数部分分开处理。
(1)首先最后一位向倒数第二位借“1”,相当于得到了(10)2,也就是相当于十进制数中的2,用2减去1 得1。
(2)再计算倒数第二位,因为该位同样为“0”,不及减数“1”大,需要继续向倒数第三位借“1”(同样 是借“1”当“2”),但因为它在上一步中已借给了最后一位“1”(此时是真实的“1”),则倒数第二位为1, 与减数“1”相减后得到“0”。
运算
加法 减法
乘法 除法

汉字编码
ASCII码
实例对照
如下:
(1)首先是最右数码位相加。这里加数和被加数的最后一位分别为“0”和“1”,根据加法原则可以知道, 相加后为“1”。
(2)再进行倒数第二位相加。这里加数和被加数的倒数第二位都为“1”,根据加法原则可以知道,相加后 为“(10)2”,此时把后面的“0”留下,而把第一位的“1”向高一位进“1”。

无符号类型数据位运算法则

无符号类型数据位运算法则

无符号类型数据位运算法则
无符号类型数据位运算法则是指在无符号整数类型中进行位运
算时,得到的结果是基于二进制位的操作。

无符号整数类型的范围是0 到 2^n-1,其中 n 表示该类型占用的位数。

在无符号整数类型中,位运算符包括按位与(&)、按位或(|)、按位异或(^)、左移(<<)和右移(>>)。

按位与运算符(&)表示两个操作数对应位置上的二进制位都为 1 时,该位置上的结果为 1,否则为 0。

例如,0b1010 & 0b1100 = 0b1000。

按位或运算符(|)表示两个操作数对应位置上的二进制位有一
个为 1 时,该位置上的结果为 1,否则为 0。

例如,0b1010 | 0b1100 = 0b1110。

按位异或运算符(^)表示两个操作数对应位置上的二进制位不
同时,该位置上的结果为 1,否则为 0。

例如,0b1010 ^ 0b1100 = 0b0110。

左移运算符(<<)将一个数的二进制位向左移动指定的位数,空出的位数补 0。

例如,0b1010 << 2 = 0b101000。

右移运算符(>>)将一个数的二进制位向右移动指定的位数,空出的位数补 0。

例如,0b1010 >> 2 = 0b10。

需要注意的是,无符号整数类型进行左移运算时可能会导致溢出,而右移运算则会在最高位补 0。

因此,在进行位运算时需要谨慎考虑数据类型的范围和位数,以避免出现不可预测的结果。

- 1 -。

移位运算的规则

移位运算的规则

移位运算是计算机中的一种基本运算,它可以对一个二进制数进行位移操作,在数值上相当于将这个数乘以或除以2的幂次方。

移位运算包括左移和右移两种方式,其中左移是将二进制数向左移动若干位,右移则是将二进制数向右移动若干位。

在本文中,我们将详细讨论移位运算的规则。

1. 左移运算左移运算是将一个二进制数向左移动若干位,移动的位数由运算符右侧的数字指定。

例如,对于二进制数11001110,如果进行左移3位,则结果为01110000。

左移运算的规则如下:- 左移n位相当于将这个数乘以2的n次方。

- 如果左移后的结果超出了该数据类型的取值范围,则结果将被截断,只保留低位的有效数字。

- 如果左移的位数为负数,则结果为右移操作。

2. 右移运算右移运算是将一个二进制数向右移动若干位,移动的位数由运算符右侧的数字指定。

例如,对于二进制数11001110,如果进行右移3位,则结果为00011001。

右移运算的规则如下:- 右移n位相当于将这个数除以2的n次方,结果向下取整。

- 如果右移后的结果超出了该数据类型的取值范围,则结果将被截断,只保留低位的有效数字。

- 如果右移的位数为负数,则结果为左移操作。

3. 逻辑移位和算术移位在上述规则中,左移和右移都是按照二进制位进行操作的,称为逻辑移位。

除此之外,还有一种移位方式称为算术移位,它是针对带符号整数进行的。

在算术移位中,右移操作会保持原数的符号位不变。

例如,对于带符号整数10101111,如果进行右移1位,则结果为11010111。

在这个例子中,右移操作会保留原数的符号位1,移动到最高位。

算术移位的规则如下:- 右移n位时,保留原数的符号位作为新的符号位,移动到最高位。

- 左移n位时,不保留原数的符号位,将新增的位都填充为0。

4. 应用举例移位运算在计算机科学中有着广泛的应用,下面举两个例子说明其应用场景。

(1)无符号整数的乘法运算在计算机中,无符号整数的乘法运算可以通过移位运算实现。

第4章8051单片机的中断系统

第4章8051单片机的中断系统
7
第四章 8051单片机的中断系统
例3-3 双字节数取补子程序。将(R4R5)中的双字节数取补,结果 送R4R5。 低8位送入A CMPT: MOV A,R5 低8位取反 CPL A ADD A, #1 低8位最低位加1 MOV R5, A MOV A, R4 CPL A 与前面相似 ADDC A, #0 MOV R4,A 无需SETB ACC.7 RET 对于二进制数,左移一位相当于乘以2,右移一位相当于除以2。 由于一般带符号数的最高位为符号位,故在执行算术移位操作时, 必须保持符号位不变。 原码表示的负数:由于负数的符号位为1,故移位时符号位不参 加移位; 8
第四章 8051单片机的中断系统
具体
14
第四章 8051单片机的中断系统 例3-10无符号二进制乘法程序。将(R2R3)和(R6R7)两个双字节 无符号数相乘,结果送R4R5R6R7。
NMUL: MOV R4, #0 MOV R5, #0 MOV R0, #16 ; 16位二进制数 CLR C NMLP: MOV A, R4 ;右移一位 RRC A MOV R4, A MOV A, R5 RRC A R4 R5 MOV R5, A MOV A, R6 RRC A MOV R6, A MOV A, R7 RRC A MOV R7, A JNC NMLN ;C为移出的乘数最低位, 若为0,则不执行加法 MOV A, R5 ;执行加法 15 ADD A, R3 MOV R5, A MOV A, R4 ADDC A, R2 MOV R4, A NMLN: DJNZ R0, NMLP ;循环16次 MOV A, R4 ;最后再右移一位 RRC A MOV R4, A R6 R7 MOV A, R5 RRC A MOV R5, A MOV A, R6 RRC A MOV R6, A MOV A, R7 RRC A MOV R7, A RET

计算机的进制计算方法

计算机的进制计算方法

计算机的进制计算方法计算机作为现代社会中不可或缺的一部分,其使用广泛,涉及到各种各样的计算。

而在计算过程中,不同的进制所涉及到的计算方法也不尽相同。

在本文中,将为大家介绍计算机中常见的进制计算方法。

一、二进制计算方法二进制是计算机中最基本的一种进制。

在二进制中,每个数字的取值范围为0和1,这也是为什么计算机使用二进制进行运算的原因之一。

在二进制中,计算的基本方法与十进制类似。

下面以加法为例进行说明。

1. 二进制加法在二进制加法中,每个位置的值只能是0或1。

当两个二进制数相加时,若当前位置的值为0或1,则结果为该位置的和;若为2,则结果为0,当前位置进一;若为3,则结果为1,当前位置进一。

通过重复这一过程,可以得到最终结果。

2. 二进制减法二进制减法可以借助补码的方法进行运算。

首先,需要对减数进行取反,然后加1,得到其补码。

然后,将被减数与补码相加,即可得到减法的结果。

3. 二进制乘法二进制乘法也是通过同十进制类似的方式进行计算。

具体步骤为,将被乘数的每一位与乘数相乘,然后将结果按位相加,得到最终的乘法结果。

4. 二进制除法在二进制除法中,可以借助长除法的方法进行计算。

具体步骤为,先将被除数除以除数的最高位,得到商的最高位;然后将商的最高位乘以除数,并减去被除数,得到余数;接着将余数乘以2,并重复上述步骤,直到得到商的所有位数。

二、八进制计算方法八进制是计算机中常用的一种进制,其能够更高效地表示二进制数。

在八进制中,每个数字的取值范围为0至7。

八进制的计算方法与二进制类似,只是位权从2变为了8。

三、十六进制计算方法十六进制是计算机中另一种常见的进制,其在表示二进制时更加紧凑。

在十六进制中,每个数字的取值范围为0至9及A至F。

十六进制的计算方法与二进制相似,只是位权从2变为了16。

四、进制转换方法在实际的计算中,经常需要进行不同进制之间的转换。

下面以二进制到十进制的转换为例进行说明。

1. 二进制到十进制的转换方法将二进制数按位展开,然后将每位的值与其对应的位权相乘,并累加得到最终结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(5) 标号: MULD 功能:双字节二进制无符号数乘法
入口条件:被乘数在R2、R3中,乘数在R6、R7中。
出口信息:乘积在R2、R3、R4、R5中。
影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节
MULD: MOV A,R3 ;计算R3乘R7
MOV B,R7
MUL AB
MOV R4,B ;暂存部分积
MOV R5,A
MOV A,R3 ;计算R3乘R6
MOV B,R6
MUL AB
ADD A,R4 ;累加部分积
MOV R4,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2 ;计算R2乘R7
MOV B,R7
MUL AB
ADD A,R4 ;累加部分积
MOV R4,A
MOV A,R3
ADDC A,B
MOV R3,A
CLR A
RLC A
XCH A,R2 ;计算R2乘R6
MOV B,R6
MUL AB
ADD A,R3 ;累加部分积
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
RET

相关文档
最新文档