excel⼆进制移位运算_计算机组成原理学习笔记:⼆数据的表
⽰和运算
⽂章⽬录:
⼀、校验码
⼆、数据的存储⽅式
三、定点数的表⽰和运算
1.有符号数
2.C语⾔中的整型数据类型
3.定点整数的符号扩展
4.加减法
5.溢出判断
6.移位运算
四、IEEE 754标准
五、C语⾔中的类型转换**
六、浮点数的运算
七、⼀些考察频率不⾼的知识点
⼀、校验码
校验码是指能够发现或能够⾃动纠正错误的数据编码,也称检错纠错编码。校验码的原理是通过增加⼀些冗余码,来检验或纠错编码。
关于码距:通常某种编码都由许多码字构成,任意两个合法码字之间最少变化的⼆进制位数,称为数据校验码的码距。对于码距不⼩于2的数据校验码,开始具有检错的能⼒。码距越⼤,检错、纠错的能⼒就越强,⽽且检错能⼒总是⼤于等于纠错能⼒。
奇偶校验码:只能发现⼀位奇数位的出错情况,不能纠错。
奇偶校验码
海明校验码:可以最多发现两位并纠正⼀位错位,使⽤很⼴泛,实际上是⼀种多重奇偶校验码。例题如下:
海明校验码
循环冗余码:能发现并纠正多位错误。常⽤于⽹络层,传输⼤量数据。例题如下:
⼆、数据的存储⽅式
⼤端⽅式和⼩端⽅式: 现在的计算机基本上按字节编址,但是⼀个数据未必是⼀个字节装得下的,也就是说⼀个数据可能要分好⼏个⼤端⽅式和⼩端⽅式:
存储单元才装得下,先放低位再放⾼位就是⼩端⽅式,先放⾼位再放低位就是⼤端⽅式。
边界对齐: 假设存储字长为32位,可按字节、半字和字寻址。对于机器字长为32位的计算机,数据以边界对齐⽅式存放,半字地址边界对齐:
⼀定是2的整数倍,字地址⼀定是4的整数倍,这样⽆论所取的数据是字节、半字还是字,均可⼀次访存取出。所存储的数据不满⾜上述要求时,通过填充空⽩字节使其符合要求。这样虽然浪费了⼀些存储空间,但可提⾼取指令和取数的速度。体现的是空间换时间
空间换时间的思想。
三、定点数的表⽰和运算
1.有符号数
0的表⽰有+0=00000和-0=10000。+0和-0是同⼀个数并不是两个数。
原码:最⾼位表⽰符号位,其余的表⽰绝对值。0的表⽰有+0=00000和-0=10000
0的表⽰是唯⼀补码:真值为整数那么补码就是原码;若真值为负数,原码的符号位不变其余的取反,并且最低位+1,得到补码。0的表⽰是唯⼀的,尽管原码的0不唯⼀,求补码时低位+1的操作反⽽使得+0和-0相同了。另外,整数补码表⽰的范围是-(2n-1)—2n,相⽐原码它的上界多1。
0的表⽰不唯⼀,因反码:和补码有⼀点点像但不同,如果真值是正数,反码就是原码;如果真值是负数,除符号位之外其余的取反。0的表⽰不唯⼀为原码0不唯⼀。
0的表⽰是唯⼀的。
移码:在原码的基础上加上⼀个偏置值就得到了移码,⾄于偏置值,⽐如⼀共有8位,则偏置值为127;0的表⽰是唯⼀的。
2.C语⾔中的整型数据类型
补码形式记录真值,对于⽆符号数以原码
原码形式记录真值。
有符号数和⽆符号数的转换: 在计算机中,同样的数值,对于有符号数以补码
有符号数和⽆符号数的转换:
符号位数值。
不同字长整数之间的转换:
不同字长整数之间的转换: 长类型—>短类型,⾼位截肢;短类型—>长类型,⾼位补符号位
二进制编码转换3.定点整数的符号扩展
需要注意的是⾼位添0还是1的问题,如下:
正数补0
负数:原码补0,反码、补码补1。
4.加减法
原码加减法:
加法规则∶先判符号位,若相同,则绝对值相加,结果符号位不变;若不同,则做减法,绝对值⼤的数减去绝对值⼩的数,结果符号位与绝对值⼤的数相同。
减法规则∶两个原码表⽰的数相减,⾸先将减数(后⾯那个数)符号取反,然后将被减数(前⾯那个数)与符号取反后的减数按原码加法进⾏运算。
注意∶运算时注意机器字长,当左边位出现溢出时,将溢出位丢掉。
补码加减法(实现简单,计算机普遍使⽤):
补码加减法
基本原理:若做加法,则两数的补码直接相加;若做减法,则将被减数与减数的机器负数相加。
两个操作数均由补码表⽰;符号位与数值位按同样规则⼀起参与运算,符号位运算产⽣的进位要丢掉,结果的符号位由运算得出。
5.溢出判断
溢出是指运算结果超过了数的表⽰范围。通常,称⼤于机器所能表⽰的最⼤正数为上溢,⼩于机器所能表⽰的最⼩负数为下溢。只有两个符号相同的数相加或符号不同的数相减才可能发⽣溢出。
采⽤⼀位符号:
采⽤⼀位符号: 由于减法运算在机器中是⽤加法器实现的,因此⽆论是加法还是减法,只要参加操作的两个数符号相同,结果⼜与
双符号位法/模4补码: 运算结果的两个符号位相同,表⽰未溢出;运算结果的两个符号位不原操作数符号不同,则表⽰结果溢出。 双符号位法/模4补码:
同,表⽰溢出,此时最⾼位符号位代表真正的符号。
6.移位运算
算术移位:
算术移位
逻辑移位:
逻辑移位
左移、右移都添0。
循环移位:
循环移位
四、IEEE 754标准
对于规格化的⼆进制浮点数,数值的最⾼位总是"1",为了能使尾数多表⽰⼀位有效位,将这个"1"隐含,因此尾数数值实际上是
注意:“1”隐含后尾数不进⾏⼆次规格化。
24 位。隐含的"1"是⼀位整数。临时浮点数⼜称扩展精度浮点数,⽆隐含位。
24 位。隐含的"1"是⼀位整数。临时浮点数⼜称扩展精度浮点数,⽆隐含位。注意:“1”隐含后尾数不进⾏⼆次规格化。
上⾯两种格式,阶码最⼤值分别为127和1023。
注意:阶码机器数全为1,⽤来表⽰⽆穷⼤。阶码机器数全为0,⽤来表⽰此数值为0。
五、C语⾔中的类型转换
C语⾔中,float型对应单精度浮点数,double型对应于双精度浮点数,long double对应于扩展双精度浮点数(但不同机器可能不同)。
强制类型转换:在等式赋值和判断中出现,可能会有范围、精度的损失。
隐式转换:转换过程⽆范围和精度损失
char(1bit)——>int(4bit)——>long(8bit)——>float(4bit)——>double(8bit)
其他情况可能有损失:
总长度变⼩,可能会溢出;总长度⼀样,但有效位数变少,需要舍⼊,导致精度损失。
六、浮点数的运算
阶码和尾数要分开进⾏,⼀律采⽤补码形式。
①对阶:⼩阶向⼤阶看齐,通过尾数不断算术右移同时增加阶数来实现升阶,直到阶数相等为⽌。由于有效数位可能会变少,所以可能
①对阶
会影响浮点数的精度。
②尾数求和:补码加减
②尾数求和
③规格化:通过左规和右规(解决溢出),来保证浮点数的符号位和⼩数点第⼀位不同(因为是采⽤的补码形式)。
③规格化
④舍⼊
对阶和右规的时候。因为最低有效位可能会往右移直到需要舍弃,此时,这⼀位的前⼀位需要舍⼊。分为0舍1⼊
④舍⼊:可能出现在对阶和右规
舍⼊是浮点数才有的概念,定点数没有。
(舍弃的最⾼位为1则末位为1,否则为0)、末位恒置1。舍⼊是浮点数才有的概念,定点数没有。
⑤溢出判断: 尾数溢出未必结果就溢出,此时应当右规,若右规之后阶码溢出则结果溢出。
⑤溢出判断:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论