a和b相减,无论a是不是有符号,b是不是有符号,它的结果的内存值是一样的。
这就是补码的天然特性。它的区别就在于你如何看待。
所以10 - 42, 得到的结果,如果你把它看成无符号就是4294967264,如果看成有符号就是-32,这2个数值的内存表达是一样的。要知道cpu才不知道有没有符号,cpu就是运算,运算,有没有符号是给人看的,不是给机器看的。补码是不是很神奇,如此浑然天成。
无符号数是针对二进制来讲的,无符号数的表数范围是非负数。
全部二进制均代表数值,没有符号位。即第一个0或1来表示正负。
无符号数与有符号数相对:
C支持所有整形数据类型的有符号数和无符号数运算。尽管C标准并没有指定某种有符号数的表示,但是几乎所有的机器都使用二进制补码。
通常,大多数数字默认都是有符号的,C也允许无符号数和有符号数之间的转换,转换原则是基本的位表示保持不变。因此在一台二进制补码机器上,当从无符号数转换为有符号数时,效果就是应用U2Tw,而从有符号转换为无符号数时,就是应用函数T2Uw,其中w表示数据类型的位数。
T2Uw(x) = (x<0)(x+2w) :x;U2Rw(x) = (x<2w-1)x:(x-2w)。
当执行一个运算时,如果它的一个运算数是有符号的而另一个是无符号的,那么C会隐含地将有符号参数强制转换为无符号数,并假设这两个数都是非负的,来执行这个运算。
加法:负数1+负数2=-|负数1+负数2|=负数 负数+正数=符号取绝对值较大的加数的符号,数值取“用较大的绝对值减去较小的绝对值 ”的所得值减法:负数1-负数2=负数1-|负数2| =符号取绝对值较大的加数的符号,
计算器不按正常的减号就可以连续减法,先输入一个数,然后点击+/-这个按键得出来的是负数。
负数是数学术语,比0小的数叫做负数,负数与正数表示意义相反的量。负数用负号“-”和一个正数标记,如_2,代表的就是2的相反数。于是,任何正数前加上负号便成了负数。一个负数是其绝对值的相反数。在数轴线上,负数都在0的左侧,最早记载负数的是我国古代的数学著作《九章算术》。在算筹中规定“正算赤,负算黑”,就是用红色算筹表示正数,黑色的表示负数。两个负数比较大小,绝对值大的反而小。
1、负数减负数等同于负数加负数的相反数。
2、减法运算运算:负数1-负数2=负数1+(正数2)=负数1加上负数2的相反数,再按负数加正数的方法算。例如:
-1-(-2)=-1+2=1。
-3-(-5)=-3+5=2。
3、负数计算法则:
(1)加法:
负数1+负数2=-(负数1+负数2)=负数。
负数+正数=符号取绝对值较大的加数的符号,数值取“用较大的绝对值减去较小的绝对值”的所得值。
(2)减法:
负数1-负数2=负数1+(负数2)=负数1加上负数2的相反数,再按负数加正数的方法算。
负数-正数=-(正数+负数)=负数异号两数相减,等于其绝对值相加。
负数减法的过程与正数减法的过程是基本相似的。在进行负数减法时,需要注意减数和被减数的符号。
举个例子,对于表达式 "-6 - (-3)",我们可以按照以下步骤进行计算:
将减数的符号取相反数,得到 3。
将被减数与减数的符号取相反数,得到 -6。
对被减数和减数求和,得到 -6 + 3 = -3。
因此,"-6 - (-3) = -3"。
通常来说,负数减法可以使用加法的方式进行计算,例如 "-6 - (-3) = -6 + 3 = -3"。这样可以避免出现负数减法的混淆情况,也方便计算。
注意,负数减法的运算符是减号 "-",而不是加号 "+"。因此,在进行负数减法时,需要注意使用减号进行计算。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)