整数的运算
这章书本的内容感觉很复杂,且推导较多。主要就是一些运算的溢出问题,而底层的运算规则又没怎么讲,下面的底层运算规则是自己推导的。
加法
无符号的加法就是二进制数的直接相加然后对位数取模,这比较好理解。如果溢出就是取模后的结果。
有符号的加法是数的补码直接进行加法运算,然后还是取模。溢出就是取模的结果。
非
补码的非就是每位取反。
乘法
在二进制位的层面,乘法运算和十进制的乘法运算的方法是一样的。如:123 = 11000011 = 0011000+001100 = 100100 = 36。
补码也是一样的运算方式。
超过表达位数的需要取模。
乘除法优化
乘除在计算机运算中十分耗时。于是提出使用移位和加法来替代乘法。
数值二进制数的左移和右移相当于进行了乘法和除法。
x14 = x(23+22+21) = (x<<3)+(x<<2)+(x<<1)
浮点数
浮点数是近似的表示方法,在向整数转换时会有误差或者错误。
浮点数表示对形如V = x×2y的有理数进行编码。
普遍使用IEEE标准来表示浮点数。
V = (-1)s×M×2E
s:表示正负值
M:尾数,是一个二进制小数
E:阶码,2的次幂的权重
规格化值:
最普遍情况。E中位不全为0或1。
E = e - Bias。
e是位表示的无符号数,Bias是等于2k-1-1的偏置值。
M = 1 + f。
非规格化值:
E位码全为0时。
E = 1-Bias
M = f
特殊值:
E位码全为1,M全为0,表示无穷。s=0表示正无穷,s=1表示负无穷。
E位码全为1,M非全0,表示NAN(not a number)
舍入
默认为向偶数舍入,即舍入之后的最后一个数是偶数。
小结
果然在看的时候还是有些晦涩难懂,而且根本不知道看了有什么用。
后面很多也是这样,为了工作准备打算先跳过一些,看看网络编程。