[关闭]
@XingdingCAO 2017-06-16T14:20:38.000000Z 字数 3843 阅读 5312

整数和浮点数的在计算机中的表示以及运算

浮点数 整数


整数(定点数)

参考wiki百科条目:

​ 有符号数处理 https://zh.wikipedia.org/wiki/%E6%9C%89%E7%AC%A6%E8%99%9F%E6%95%B8%E8%99%95%E7%90%86

​ 算术溢出 https://zh.wikipedia.org/wiki/%E7%AE%97%E8%A1%93%E6%BA%A2%E5%87%BA

原码 反码 补码
4 0000000000000100 0000000000000100
3 0000000000000011 0000000000000011
-4 1000000000000100 1111111111111011
32767(2^15-1) 0111111111111111 0111111111111111
-32768(2^15) 1000000000000000 1111111111111111
3 + 4 = 0000000000000011B + 0000000000000011B = 0000000000000111B = 7

​//正常运算

3 + (-4) = 0000000000000011B + 1111111111111100B = 1111111111111111B = -1

​//正常运算

4 + (-4) = 0000000000000100B + 1111111111111100B = ~~1~~ 0000000000000000B = 0 

​//正常运算

//但是注意运算结果丢失了一位,这并不是溢出,而是**最高位进位**。**进位**并不一定是**溢出**,因为当进位的结果和我们预期的是一样的时**不溢出**,而只有产生不正确的值时才是**溢出**。在加法器的电路设计中,**进位**也是重要的一部分。只处理二个位元相加,无法考虑进位的称为**半加法器**,能处理二个位元及一个进位位元相加的才称为**全加法器**。

32767 + 3 = 0111111111111111B + 0000000000000011B = 1000000000000010B = -32766

​//溢出

-32768 + (-4) = 1000000000000000B + 1111111111111100B = ~~1~~ 0111111111111100B = 32764

//同时发生溢出和进位

32767 * 3 = 0111111111111111B + 0111111111111111B + 0111111111111111B = ~~1~~ 0111111111111101B = 32765

//同时发生溢出和进位

表示

总结溢出发生在越过(方向不限)正数与负数的边界时。进位则是发生在向右越过最右端的边界、向左越过正数与负数的边界时。

浮点数

参考wiki条目

​ IEEE 754 https://zh.wikipedia.org/wiki/IEEE_754#.E6.9C.AC.E6.96.87.E8.A1.A8.E7.A4.BA.E4.BD.8D.E5.85.83.E7.9A.84.E7.B4.84.E5.AE.9A

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注