目录
王道考研ppt总结:
二、个人理解
浮点数加减运算步骤:1、对阶2、尾数加减3、规格化(左规和右规)4、舍入5、判断溢出
三、数据类型转换
王道考研ppt总结:
二、个人理解
浮点数加减运算步骤:
1、对阶
2、尾数加减
3、规格化(左规和右规)
4、舍入
5、判断溢出
通过十进制浮点数加减法理解二进制加减法:
十进制的浮点数进行加减法:
1、对阶
让低阶向高阶对齐
为什么?
如果是高阶对齐低阶,就会导致小数点前出现一个比较大的整数
而计算机现在要处理的是浮点数,
现在突然出现了一个大的整数,
不好处理,需要特殊处理
所以,让低阶对齐高阶
就只需要对低阶的数据进行左移,阶码对应增大即可
2、当阶码对齐,尾数进行相加减
3、尾数的结果如果超过了9,或者为0,需要规格化
超过9,尾数向右移动,阶码+1
为0,尾数向左移动,阶码-1
4、舍入
当尾数只能存4位时,但是此时计算得出的尾数结果超过了4位
就需要进行舍入
常用四舍五入的方式
二进制的舍入,一般是0舍1入;或者恒置1法
5、判断溢出
如果阶码的位只有2位,也就是最大只能表示10的99次幂
但是,尾数计算相加时,阶码变成了10的100次幂
明显,溢出
需要特别处理
如果发生上溢,抛出异常
如果发生下溢,直接置0
负数的原码转补码:
1、数值位取反+1
2、从右到左,找到第一个1,这个1右边的数值不变,左边的数值取反,即可得到该负数原码的补码
尾数的扩展:
补码的定点小数的扩展:只需要在后面+0即可s
为什么求一个补码的负数补码需要所有的位取反+1?
1、假设这个数据是原码
那么其负数是一个负数,原来的数据是正数,所以符号位要取反,由0变成1;
数值位要取反+1
所以,如果原来的数据是正数,补码就是原码,负数的补码就是全部取反+1
2、假设这个数据是一个负数
那么其负数就是一个正数,现在的数据是正数,所以符号位要取反,由1变0
数值位,相当于负数的补码变成原码的过程,也就是同样的取反+1
所以,如果是负数的补码,再添加一个负号的补码,事实上就是原码
所以,依旧是整体的取反+1
因此,无论是正数还是负数的补码,当要求其负数的补码时,都是全部取反+1
三、数据类型转换
char范围详解,为什么是-128~127,以及int类型范围详解(整型数据在内存中的存储)_-127到128什么类型-CSDN博客