定点小数的运算

1、整数及其二进制表示

假设用16位表示一个10位的二进制数。

1.1、无符号整数及其二进制表示

0000 0011 1111 1111 =1023;
0000 0011 1111 1110 =1022;
0000 0010 0000 0000 =512;
0000 0001 1111 1111=511;
0000 0000 0000 0001=1;
0000 0000 0000 0000=0;

则这个无符号十位数表示的范围:0~1023;

1.2、有符号整数及其二进制表示

这个10位数的最高位就表示符号位:0表示正数,1表示负数。

0000 0001 1111 1111 =511;
0000 0001 1111 1110 =510;
0000 0000 0000 0001 =1;
0000 0000 0000 0000=0;
1111 1111 1111 1111= -1;(辅助记忆:最高位为1表示负数,后面全为1表示最大,则为负的最大值即 -1)
1111 1110 0000 0001= -511;
1111 1110 0000 0000= -512;(辅助记忆:最高位为1表示负数,后面全为0表示最小,则为负的最小值即 -512)

则这个有符号十位数表示的范围:-512~511;

注意:计算一个负数的二进制时,首先计算它的绝对值的二进制,然后取反加1

2、小数及其二进制表示

2.1、有符号小数及其二进制表示

假定二进制数有16位,最高位为符号位,有效位有15位,那么小数点之后可以有0~15位,我们把小数点后有n位称为Qn格式。下面以Q12为例:

2.1.1 二进制数对应其小数

0111.1111 1111 1111 = 7.999755859375;小数点前面表示整数部分,小数点后面表示小数部分。

上面定点数转化为小数的计算方法:

  1. 计算 0111 1111 1111 1111 对应的十进制数;为 32767
  2. 其对应的十进制数除以 2 12 2^{12} 212 ; 32767/ 2 12 2^{12} 212=7.999755859375

也可以参照下面的方法计算
在这里插入图片描述

2.1.2 小数对应其二进制数

-7.999755859375 = 1000000000000001

上面小数转化为定点数的计算方法

  1. 将小数乘 2 12 2^{12} 212转化为十进制数 ;-7.999755859375× 2 12 2^{12} 212= - 32767
  2. 将这个十进制数转化为二进制; -32767 = 1000 0000 0000 0001

3、 定点小数的运算

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

4、Matlab中定点数的表示

4.1、定点数据对象的创建

举个例子: 创建一个有符号的定点数据对象,总位数16位,其中小数部分为15位。
x = fi(0.5,1,16,15); 其中 1表示有符号数。

4.2、定点数据对象的定点数据范围

如上面的例子,其定点数的范围: − 2 15 到 2 15 − 1 -2^{15}到2^{15}-1 2152151,即:-32768~32767 。

4.3、定点数据对象真实数据范围

如上面的例子,真实值范围: − 1 到 1 − 2 − 15 -1到1-2^{-15} 11215.

4.3、定点数据对象的分辨率

如上面的例子,其分辨率为: 2 − 15 2^{-15} 215,即:0.000030517578125

4.4、定点数据和真实数据的转换

如上面的例子:

>> x = fi(0.5,1,16,15);
y = x.int
z = x.double
x.double = 0.2;
y = x.int
z = x.double
x.int = 256;
z = x.double

y =

  int16

   16384


z =

    0.5000


y =

  int16

   6554


z =

    0.2000


z =

    0.0078

>> 

本文整理自https://blog.csdn.net/yanxiaopan/article/details/76853040

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值