核 心 : \color{red}{核心:} 核心:
阶 码 的 补 码 运 算 \color{red}{阶码的补码运算} 阶码的补码运算
举例:
1.5 x 10^3 和 1.25 x 10^5
小 阶 向 大 阶 \color{green}{小阶向大阶} 小阶向大阶
则有 0.015 x 10^5 和 1.25 x 10^5
但这是我们人站在十进制的角度来进行的
计 算 机 的 处 理 方 式 与 我 们 人 的 处 理 方 式 不 同 \color{green}{计算机的处理方式与我们人的处理方式不同} 计算机的处理方式与我们人的处理方式不同
计算机内,是根据他们之间 阶 码 的 差 \color{green}{阶码的差} 阶码的差来决定怎么对阶的
具体解析:(以32位的 float 类型为例)
1.5 x 10^3 的阶码为 127+3=130 转化成二进制—— 1000 0001
1.25 x 10^5的阶码为 127+5=132 转化成二进制—— 1000 0100
要求差,则把他们做减法运算
1000 0010 - 1000 0100
等价于
1000 0010 + [ 1000 0100 ]补码
即
1000 0010 + 0111 1100 = 1111 1110 (这是结果的补码,还要再化成原码)
注 意 : 这 是 带 符 号 的 , 符 号 位 为 首 位 \color{red}{注意:这是带符号的,符号位为首位} 注意:这是带符号的,符号位为首位
减1取反(取反时符号位不变)
1000 0010 (十进制——即 - 2 = 3 - 5)
得到 -2
则表示,应该把 1.5 x 10^3 的尾数右移两位,然后阶码+2
即 0.015 x 10^5
而且,阶码都变成了1000 0100 (132 = 127 + 5)
注 意 : 如 果 是 + 2 的 话 , 则 表 示 要 把 另 外 一 个 数 右 移 两 位 \color{green}{注意:如果是+2 的话,则表示要把另外一个数右移两位} 注意:如果是+2的话,则表示要把另外一个数右移两位
注 意 : 对 阶 过 后 会 把 隐 藏 位 “ 1 ” 给 显 现 出 来 哦 ( 即 不 再 有 隐 藏 位 ) \color{red}{注意:对阶过后会把隐藏位“1”给显现出来哦(即不再有隐藏位)} 注意:对阶过后会把隐藏位“1”给显现出来哦(即不再有隐藏位)