负数源码表示的乘积运算_负数的累乘

hacker|
93

文章目录:

如何计算负数乘法?

两个负数相乘,先看符号,如果两个数的符号都是正号或负号,那么这两个数的乘积就是正数;如果这两个数中有一个是负数,那么这个乘积就是负数。这是先判断符号,符号判断好了,就把这两个数相乘。

例:(-2)×(-5)=10

(-3)× 4 =-12

一个数和0相乘,仍旧的这个数

例: 0 ×(-12)=0

负数乘除法怎么算?

负数的乘法/除法:先判断符号,然后将所有数当成正数一样相乘/除法。

判断符号的方法:负负得正,正负得负。有偶数个负号结果则正,奇数个负号结果则为负。

负数乘法:负数1×负数2=(负数1×负数2)=正数,负数×正数=-(正数×负数)=负数。

如:-2x(-5) =+10,-2x(-5)x(-1) = -10。

基本信息

负数都比零小,则负数都比正数小。零既不是正数,也不是负数。

负数中没有最小的数,也没有最大的数。

分数也可做负数,如:-2/5。

负数的平方根用虚数单位“i”表示。(实数范围内负数没有平方根)

最大的负整数为:-1。

没有最小的负数。

[编程]关于汇编语言的负数的表示以及运算

数在计算机中是以二进制形式表示的。

数分为有符号数和无符号数。

原码、反码、补码都是有符号定点数的表示方法。

一个有符号定点数的最高位为符号位,0是正,1是副。

以下都以8位整数为例,

原码就是这个数本身的二进制形式。

例如

0000001 就是+1

1000001 就是-1

正数的反码和补码都是和原码相同。

负数的反码是将其原码除符号位之外的各位求反

[-3]反=[10000011]反=11111100

负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。

[-3]补=[10000011]补=11111101

一个数和它的补码是可逆的。

为什么要设立补码呢?

第一是为了能让计算机执行减法:

[a-b]补=a补+(-b)补

第二个原因是为了统一正0和负0

正零:00000000

负零:10000000

这两个数其实都是0,但他们的原码却有不同的表示。

但是他们的补码是一样的,都是00000000

特别注意,如果+1之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!)

[10000000]补

=[10000000]反+1

=11111111+1

=(1)00000000

=00000000(最高位溢出了,符号位变成了0)

有人会问

10000000这个补码表示的哪个数的补码呢?

其实这是一个规定,这个数表示的是-128

所以n位补码能表示的范围是

-2^(n-1)到2^(n-1)-1

比n位原码能表示的数多一个

又例:

1011

原码:01011

反码:01011 //正数时,反码=原码

补码:01011 //正数时,补码=原码

-1011

原码:11011

反码:10100 //负数时,反码为原码取反

补码:10101 //负数时,补码为原码取反+1

0.1101

原码:0.1101

反码:0.1101 //正数时,反码=原码

补码:0.1101 //正数时,补码=原码

-0.1101

原码:1.1101

反码:1.0010 //负数时,反码为原码取反

补码:1.0011 //负数时,补码为原码取反+1

总结:

在计算机内,定点数有3种表示法:原码、反码和补码

所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

1、原码、反码和补码的表示方法

(1) 原码:在数值前直接加一符号位的表示法。

例如: 符号位 数值位

[+7]原= 0 0000111 B

[-7]原= 1 0000111 B

注意:a. 数0的原码有两种形式:

[+0]原=00000000B [-0]原=10000000B

b. 8位二进制原码的表示范围:-127~+127

2)反码:

正数:正数的反码与原码相同。

负数:负数的反码,符号位为“1”,数值部分按位取反。

例如: 符号位 数值位

[+7]反= 0 0000111 B

[-7]反= 1 1111000 B

注意:a. 数0的反码也有两种形式,即

[+0]反=00000000B

[- 0]反=11111111B

b. 8位二进制反码的表示范围:-127~+127

3)补码的表示方法

1)模的概念:把一个计量单位称之为模或模数。例如,时钟是以12进制进行计数循环的,即以12为模。在时钟上,时针加上(正拨)12的整数位或减 去(反拨)12的整数位,时针的位置不变。14点钟在舍去模12后,成为(下午)2点钟(14=14-12=2)。从0点出发逆时针拨10格即减去10小 时,也可看成从0点出发顺时针拨2格(加上2小时),即2点(0-10=-10=-10+12=2)。因此,在模12的前提下,-10可映射为+2。由此 可见,对于一个模数为12的循环系统来说,加2和减10的效果是一样的;因此,在以12为模的系统中,凡是减10的运算都可以用加2来代替,这就把减法问 题转化成加法问题了(注:计算机的硬件结构中只有加法器,所以大部分的运算都必须最终转换为加法)。10和2对模12而言互为补数。

同理,计算机的运算部件与寄存器都有一定字长的限制(假设字长为8),因此它的运算也是一种模运算。当计数器计满8位也就是256个数后会产生溢 出,又从头开始计数。产生溢出的量就是计数器的模,显然,8位二进制数,它的模数为28=256。在计算中,两个互补的数称为“补码”。

2)补码的表示: 正数:正数的补码和原码相同。

负数:负数的补码则是符号位为“1”,数值部分按位取反后再在末位(最低位)加1。也就是“反码+1”。

例如: 符号位 数值位

[+7]补= 0 0000111 B

[-7]补= 1 1111001 B

补码在微型机中是一种重要的编码形式,请注意:

a.采用补码后,可以方便地将减法运算转化成加法运算,运算过程得到简化。正数的补码即是它所表示的数的真值,而负数的补码的数值部份却不是它所表示的数的真值。采用补码进行运算,所得结果仍为补码。

b.与原码、反码不同,数值0的补码只有一个,即 [0]补=00000000B。

c.若字长为8位,则补码所表示的范围为-128~+127;进行补码运算时,应注意所得结果不应超过补码所能表示数的范围。

原码、反码、补码,计算机中负数的表示?

一:对于正数,原码和反码,补码都是一样的,都是正数本身。

对于负数,原码是符号位为1,数值部分取X绝对值的二进制。

反码是符号位为1,其它位是原码取反。

补码是符号位为1,其它位是原码取反,未位加1。

也就是说,负数的补码是其反码未位加1。

移码就是将符号位取反的补码

二:在计算机中,实际上只有加法运算,减法运算也要转换为加法运算,

乘法转换为加法运算,除法转换为减法运算。

三:在计算机中,对任意一个带有符号的二进制,都是按其补码的形式进行运算和存储的。之所以是以补码方式进行处理,而不按原码和反码方式进行处理,是因为在对带有符号位的原码和反码进行运算时,计算机处理起来有问题。

而按补码方式,一方面使符号位能与有效值部分一起参加运算,从而简化运算规则。另一方面使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计

四:补码加、减运算公式

1):补码加法公式

[X+Y]补

[X]补

+

[Y]补

2):补码减法公式

[X-Y]补

=

[X]补-[Y]补

=

[X]补

+

[-Y]补

已知[+Y]补求[-Y]补的规则是全部位(含符号位)按位取反后再加1。

五:由补码求原码

已知一个数的补码,求原码的操作分两种情况:

1.

如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。

2.

如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1;其余各位取反,然后再整个数加1。

===========================按你的要求以8位二进制进行计算=======

以8位二进制操作为例,其运算取值范围是-128~127。

那么综上所述,我们可以得到-126-100,可以看成(-126)+(-100),目的是使减法操作变为加法

-126

-

1111

1110

-反

1000

0001

-补

1000

0010

100

-

0110

0100

-

负数求补

1001

1011+1

-

负补

1001

1100

做补码相加得

-126补+(-100)

补-

1000

0010补

+

1001

1100补

-1

0001

1110补

-自然丢弃超出

0001

1110补

由补求原得到

0001

1110补

-

0001

1110原

得到的结果为00011110,如果两个负数相加如果溢出,那么结果一定是正数,由此可知计算结果溢出。

负数的加减乘除怎么算

1、负数的加法:负数的加法计算方法与正数的加法方法一样,只是在结果前加上负号就可以了。如:(-2)+(-3)=-(2+3)=-52。

2、负数的减法:简单的说就是,减去一个负数就是相当于加上那个数的正数。如:-2-(-3)=-2+3=3-2=1。或者:-3-(-2)=-3+2=2-3=-13。

3、负数的乘法:运算法则和正数的乘法一样,只是要考虑符号问题。若两个数符号相同则结果为正数,若两个数符号相反则结果为负数。如:(-2)*(-3),两个数都是负数,符号相同,所以结果为正数,也就是6。若:(-2)*3 或 2*(-3),两个数符号不同,所以结果为负数,也就是-6.4。

4、负数的除法:方法与负数的乘法一样,先按照两个数都是正数做除法,然后在判断符号。若两个数符号相同则结果为正数,若两个数符号相反则结果为负数。如:(-6)/(-2),两个数都是负数,符号相同,所以结果为正数,也就是3。若:(-6)/2 或 6/(-2),两个数符号不同,所以结果为负数,也就是-3。

扩展资料:

负数的性质

负数都比零小,则负数都比正数小。零既不是正数,也不是负数。则-a0(+)a

负数中没有最小的数,也没有最大的数。

去除负数前的负号等于这个负数的绝对值。

如-2、-5.33、-45等:-2的绝对值为2,-5.33的绝对值为5.33,-45的绝对值为45等。

分数也可做负数,如:-2/5

负数的平方根用虚数单位“i”表示。(实数范围内负数没有平方根)

最大的负整数为:-1

没有最小的负数。

参考资料来源:百度百科-负数

3条大神的评论

  • avatar
    访客 2022-07-07 下午 05:55:42

    -128~127。那么综上所述,我们可以得到-126-100,可以看成(-126)+(-100),目的是使减法操作变为加法-126-11111110-反10000001-补10000010100-01100100-负数求补10011011+1-负补1001

  • avatar
    访客 2022-07-07 下午 07:50:14

    反码=原码 补码:0.1101 //正数时,补码=原码 -0.1101 原码:1.1101 反码:1.0010 //负数时,反码为原码取反 补码:1.0011 //负数时,补码为原码取反+

  • avatar
    访客 2022-07-08 上午 01:06:56

    为模的系统中,凡是减10的运算都可以用加2来代替,这就把减法问 题转化成加法问题了(注:计算机的硬件结构中只有加法器,所以大部分的运算都必须最终转换为加法)。1

发表评论