EXCEL编程实现一个字节二进制数的补码加减运算与溢出判断
- 格式:xls
- 大小:78.50 KB
- 文档页数:2
excel表格的加减法运算
Excel中的公式加减法该如何运算呢?接下来是店铺为大家带来的excel表格的加减法运算,供大家参考。
excel表格的加减法运算:
加减法运算步骤1:左键双击打开Excel文档,首先我们普及一下Excel的基本知识,在Excel表格中行分为1,2,3,4…… ,列则分为A,B,C,D…… 。
加减法运算步骤2:首先我们在A1和B1中分别输入8和4,首先我们来进行加法运算,在C1栏中。
我们首先单击C1栏选中,然后点击任务栏中的”公式“选项,然后点击“公式”中的“查入函数”选项。
加减法运算步骤3:然后在弹出的窗口中选择"SUM"函数点击“确定”,然后会弹出一个”函数参数“窗口我们可以看到运算的结果以及函数的意思。
我们点击确定。
就可以看见函数已经用到了Excel 表格中并且在C1栏中得到了运算结果。
加减法运算步骤4:下面我们说一下减法运算,首先我们左键单击选中D1栏然后在D1栏中输入“=A1-B1”回车,然后我们就可以看见运算结果出现在D1栏中。
(二)(11)标号:DIVS功能:双字节二进制有符号数除法(补码)入口条件:被除数在R2、R3、R4、R5中,除数在R6、R7中。
出口信息:OV=0时商在R2、R3中,OV=1时溢出。
影响资源:PSW、A、B、R1~R7 堆栈需求:5字节DIVS: LCALL MDS ;计算结果的符号和两个操作数的绝对值PUSH PSW ;保存结果的符号LCALL DIVD ;计算两个绝对值的商JNB OV,DVS1 ;溢出否?POP ACC ;溢出,放去结果的符号,保留溢出标志RETDVS1: POP PSW ;未溢出,取出结果的符号MOV R4,#0MOV R5,#0MDSE: JB F0,MDS2 ;用补码表示结果CLR OV ;结果为正,原码即补码,计算成功RETMDS: CLR F0 ;结果符号初始化MOV A,R6 ;判断第二操作数的符号JNB ACC.7,MDS1;为正,不必处理CPL F0 ;为负,结果符号取反XCH A,R7 ;第二操作数取补,得到其绝对值CPL AADD A,#1XCH A,R7CPL AADDC A,#0MOV R6,AMDS1: MOV A,R2 ;判断第一操作数或运算结果的符号JNB ACC.7,MDS3;为正,不必处理CPL F0 ;为负,结果符号取反MDS2: MOV A,R5 ;求第一操作数的绝对值或运算结果的补码CPL AADD A,#1MOV R5,AMOV A,R4CPL AADDC A,#0MOV R4,AMOV A,R3CPL AADDC A,#0MOV R3,AMOV A,R2CPL AADDC A,#0MOV R2,AMDS3: CLR OV ;运算成功RET(12)标号:SH2功能:双字节二进制无符号数开平方(快速)入口条件:被开方数在R2、R3中。
出口信息:平方根仍在R2、R3中,整数部分的位数为原数的一半,其余为小数。
影响资源:PSW、A、B、R2~R7 堆栈需求:2字节SH2: MOV A,R2ORL A,R3JNZ SH20RET ;被开方数为零,不必运算SH20: MOV R7,#0 ;左规次数初始化MOV A,R2SH22: ANL A,#0C0H ;被开方数高字节小于40H否?JNZ SQRH ;不小于40H,左规格化完成,转开方过程CLR C ;每左规一次,被开方数左移两位MOV A,R3RLC AMOV F0,CCLR CRLC AMOV R3,AMOV A,R2MOV ACC.7,CMOV C,F0RLC ARLC AMOV R2,AINC R7 ;左规次数加一SJMP SH22 ;继续左规(13)标号:SH4功能:四字节二进制无符号数开平方(快速)入口条件:被开方数在R2、R3、R4、R5中。
维唯为为_博客园•博客园•首页•博问•闪存•新随笔•联系•订阅•管理随笔-150 文章-1 评论-5位运算实现加减乘除、求补、比较、正负判断位运算的思想可以应用到很多地方,这里简单的总结一下用位运算来实现整数的四则运算。
1.整数的加法1.int MyAdd(int a,int b)2.{3.for(int i=1;i;i<<=1)4.if(b&i)5.for(int j=i;j;j<<= 1)6.if(a&j) a&=~j;7.else {a|=j;break;}8.return a ;9.}我的思路主要是利用a+1的位运算就是最左端(从第0位开始向左)连续的1变为0,原先a中为0的位置最低那一位变为1。
在不同的位上加1,那就是从相应的位开始向左计算,右边不变。
下面还有一个网上的思路,我觉得这个更好:1.int AddWithoutArithmetic(int num1,int num2)2.{3.if(num2==0) return num1;//没有进位的时候完成运算4.int sum,carry;5.sum=num1^num2;//完成第一步没有进位的加法运算6.carry=(num1&num2)<<1;//完成第二步进位并且左移运算7.return AddWithoutArithmetic(sum,carry);//进行递归,相加8.}简化一下:1.int Add(int a,int b) { b?return Add(a^b,(a&b)<<1):return a; }上面的思路就是先不计进位相加,然后再与进位相加,随着递归,进位会变为0,递归结束。
2.整数的减法这个和加法一样了,首先取减数的补码,然后相加。
1.int MyMinus(int a,int b)2.{3.for(int i=1;i&&((b&i)==0);i<<=1);4.for(i<<=1;i;i<<=1) b^=i;5.return MyAdd(a,b);6.}3.整数的乘法乘法就是将乘数写成(2^0)*k0 + (2^1)*k1 + (2 ^2)*k2 + ... + (2^31)*k31,其中ki为0或1,然后利用位运算和加法就可以了。
实现补码加减运算的逻辑
补码是计算机中用来表示负数的一种方法,它可以简化加法和减法运算,并且可以使用相同的硬件逻辑来处理正数和负数。
在计算机中,补码是以二进制形式存储的,它的运算规则也不同于十进制的加减法。
在补码中,正数的表示和二进制表示相同,而负数的表示则是将对应的正数按位取反,然后加1。
这样做的好处是,可以使用相同的加法逻辑来处理正数和负数,从而简化了计算机的硬件设计。
补码加法的逻辑是比较简单的,只需要将两个补码相加,然后忽略最高位的进位。
如果最高位有进位,则说明结果为负数,否则结果为正数。
补码减法的逻辑也比较简单,只需要将减数取反加1,然后与被减数相加,即可得到减法的结果。
总的来说,补码加减运算的逻辑相对简单,而且可以使用相同的硬件逻辑来处理正数和负数,这在计算机中是非常重要的。
补码
的引入大大简化了计算机的运算逻辑,使得计算机可以更高效地处理各种数值运算。
Excel揭秘13:在Excel中实现位运算我们知道,计算机使用的是二进制计数法。
也就是说,在计算机中的所有信息都是使用二进制来存储和处理的。
下表列出了我们熟悉的十进制数及与其相对应的二进制数:位运算规则在位运算中,“按位与”运算(AND运算)分别按位比较两个相应的数字(0或1),当且仅当这两个数字都为1时,结果才为1,如下式所示:可以看出,实现“按位与”运算,就是将对应位置的数相乘。
因此,从右自左的第1个位置是1*1=1,第2个位置是0*1=1,等等,最后得到结果。
除了“按位与”运算外,还有按位或(OR)、异或(XOR)、蕴含(IMP)、相等(EQ)和非(NOT)运算,它们都有不同的运算规则。
例如,对于OR运算来说,当两个数字至少有一个为1时,结果为1,如下式所示:同理,可以看出,实现“按位与”运算,就是将对应位置的数相加,结果为正数就是1,结果为零就是0。
因此,从右自左第1个位置是1+1=2,即为1,第2个位置是0+1=1,就是1,等等,最后得到结果。
其他的位运算规则可以参阅相关资料,下面主要以“按位与”和“按位或”为例,讲解如何在Excel中实现位运算。
将十进制数转换成二进制数有时候,在Excel工作表中实现位运算是非常有用的,然而,Excel并没有直接用于位运算的函数,这就需要我们组合一些函数来实现位运算功能。
下面,以处理0至255之间的十进制数为例。
在将0至255之间的十进制数转换成二进制数时,需要的二进制数的位数是8位。
例如,十进制数0的二进制数表示为:00000000十进制数255的二进制数表示为:11111111可以使用下面的公式来获得十制数相对应的二进制数的每一位(0或1):=MOD(INT(十进制数/(2^(二进制数所处的位置值-1))),2)也就是说,要求二进制数中的其中一位,先求2对该位所在的位置值减1的幂,然后由其十进制数除以所求幂的结果,对求得的结果取整,并作为MOD函数的参数求其对2的余数,即为该位所在的二进制数(0或1)。
补码运算溢出处理全文共四篇示例,供读者参考第一篇示例:补码运算溢出处理是在计算机中进行补码运算时可能遇到的一种情况,即计算结果超出了表示范围,导致最高位溢出。
在处理这种情况时,需要采取一些方法来正确处理溢出情况,以避免出现错误的计算结果。
补码是一种用于表示有符号整数的编码方式,在计算机中广泛应用。
补码的表示方法是,正数的补码与原码相同,即最高位为0;而负数的补码则是将对应正数的补码按位取反,再加1。
这样做的好处是可以使有符号数的加减运算统一起来,并且减法运算可以转换为加法运算来实现,简化运算逻辑。
在进行补码运算时,如果计算结果超出了表示范围,就会导致溢出,需要进行溢出处理。
溢出是指计算结果超出了计算机表示的整数范围,最高位溢出了,导致无法正确表示结果。
比如在8位补码中,最大的正数为01111111,最小的负数为10000000,当进行加法运算时,如果结果超过了这个范围,则会发生溢出,最高位溢出的部分将丢失,导致结果错误。
为了正确处理补码运算溢出,可以采取以下几种方法:1. 检测溢出:在进行补码运算时,可以通过检测运算结果的最高位是否与运算数的最高位相同来判断是否发生了溢出。
如果结果的最高位与运算数的最高位不同,说明发生了溢出,需要进行处理。
2. 溢出标志位:一些计算机架构提供了溢出标志位,用于标记运算结果是否发生了溢出。
通过检查溢出标志位的状态,可以判断是否需要进行溢出处理。
3. 溢出处理:在发生溢出时,可以采取一些处理措施,比如截断溢出部分、重新计算、抛出异常等。
具体的处理方法可以根据具体情况来选择,以保证计算结果的正确性。
补码运算溢出处理在计算机程序设计中是一个重要的问题,需要程序员能够正确判断和处理这种情况,以避免出现错误的计算结果。
理解补码运算溢出处理的原理和方法,可以帮助程序员编写更加健壮和可靠的程序,提高程序的执行效率和可靠性。
第二篇示例:补码运算溢出处理是在计算机中进行数值运算时可能遇到的一种情况,当两个补码相加或者相减时,可能会发生结果超出了计算机所能表示的范围,从而引起溢出。