定点数的表示和运算

一.定点数的表示

一.无符号数

无符号数:整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值。

表示范围:n位的二进制数,有2^n种不同状态,范围是0 ~ 2^n-1

二.有符号数

一.定点表示

在这里插入图片描述

二.原码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三.补码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四.反码

在这里插入图片描述
在这里插入图片描述

五.原补反相互转换

在这里插入图片描述

六.移码

在这里插入图片描述
真值转移码

移码就是在真值X上加上一个常数(偏置值),通常这个常数取2^n

[X]移 = 2^n + x

x1=+10101,x2=-10101,字长为8位,则其移码表示为:

[X1]移 = 2^7 + 10101 = 1 000 0000 + 10101 = 10010101
[X2]移 = 2^7 + (-10101) = 1 000 0000 + (-10101) = 01101011

移码转真码

移码0111 1110的真值:

转换成无符号数真值:126

减去偏置值1000 0000对应的无符号数真值128得到移码真值:126-128=-2
或者,0111 1110 -1000 0000=1111 1110对应补码真值-2

七.负数实例

负数二进制11110110转化成十进制数,原码->反码(取反)->补码(加1):

  • 11110110逐位取反为:00001001
  • 二进制数+1得:00001010
  • 转化为十进制加负号:-10

负数十进制数-10转化为二进制,补码->反码(补码-1)->原码(反码取反):

  • 掉负号的原码为:0000 1010
  • 取反得到反码:1111 0101
  • 反码加1得到补码:1111 0110

二.定点数的运算

一.位移

一.逻辑移位

在这里插入图片描述
在这里插入图片描述

二.算数移位

在这里插入图片描述
在这里插入图片描述

三.循环位移

在这里插入图片描述

二.加减运算

一.基本操作

在这里插入图片描述

二.溢出问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三.乘法运算

一.原码一位乘法

在这里插入图片描述
原码一位乘法(机器字长n+1,数值部分占n位)

  • 符号位通过异或确定;
  • 数值部分通过被乘数和乘数绝对值的n轮质法、移位完成根据当前乘数中参与运算的位确定(ACC)加什么。若当前运算位=1,则(ACC)+[ |X| ]原;若=0,则(ACC)+0。
  • 每轮加法后ACC、MQ的内容统一逻辑右移

二.补码一位乘法

在这里插入图片描述
补码的算数右移:符号位不动,数值位右移,正数右移补0,负数右移补1(符号位是啥就补啥)

四.除法运算

在这里插入图片描述

一.原码恢复余数法

在这里插入图片描述

符号位:x ⨁ \bigoplus y

二.原码加减交替法

在这里插入图片描述

不恢复余数法:被除数减去除数,即|x|+[-|y|]补,
若结果为正,商1,左移,再减去除数;
若结果为负,商0,左移,再加上除数。

加/减n+1次,每次加减确定一位商;左移n次(最后一次加减完不移位)最终可能还要再多一次加

三.补码加减交替法

在这里插入图片描述

三.强制类型转换

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/dark159735/article/details/124726893