定点数和浮点数的区别

目的:理解定点数和浮点数在傅里叶变换(FFT)的实际应用中的选择

  • 单片机中如果需要进行一定的运算(常见的傅里叶变换)时,需要在不同情况下对AD采集的数据进行一定的处理才能得到正确的傅里叶变换后的数据,那么,选择正确的处理方式时,首先要解决的是定点数和浮点数的问题。
  • 如果使用过单片机的同学,一定会知道定点运算和浮点运算两个概念,那么,定点运算和浮点运算究竟是什么呢?
    • 定点数的概念:
      定点数字面意思就是数字是固定的,这里指的是数据在计算机中存取的位数是固定的,也就是说,给你一个数,存放在计算机中的位数是固定的。对于定点数来说,他是有局限性的,举例(eg):
      假设你要表示一个整数(假设是二进制的 110 0101),假设你使用的是8位的定点数表示,则为:
      (0110 0101)前面的最高位是:0,这个位代表的是表示的数是正数还是负数,(0 代表正数,1代表负数)。
      现在假设你要表示一个小数(假设0.625),且整数部分为0,那么在计算机中如何用8位的定点数表示呢?
      0.625=0.5+0*0.25+0.125=(.101)
      那么用定点数表示:(0101 0000),同样的,最高位(bit8)表示的是正数还是负数,后面的101 0000代表的是数据值,这样在实际的计算中,计算机就可以正确的理解数字的表示方法。
      注:定点负数表示方法分为3步:
      1.求正二进制数
      2.取反+1
      3.最高位置1
      eg(-106):
      用8位定点数表示:
      ——1.(106)=110 1010
      ——2. (110 1010)取反+1===》(001 0101)+(1)=(001 0110)
      ——3. 高位置1(1001 0110)
      这样就可以正确表示出一个负整数了。
    • 浮点数的概念:
      根据上述可知,假设你需要表示一个小数,且小数带有整数部分和小数部分,那么需要这么表示呢?
      因为计算机并没有一个可以表示 “.” 小数点的东西,所以我们需要规定一种表示的方式,即:指数表示方式:
      假设需要表示的是:(56.125),这种类型的数我们在计算机中则代表的是一个浮点数(有小数和整数部分组成),那么他是如何在计算机中表示的呢?
      首先:将560.125变换成 5.60125*10的2次方.那么在计算机中规定了(尾数、基数、指数、三个概念),其中5.60125代表的是尾数,10代表的是基数,2次方代表的是指数。
      这种方式就可以在计算机中代表任意的数字了。浮点数可以代表更多类型的数字,在实际的使用和计算的时候也相对更加精确。
  • 以上是关于定点数和浮点数的介绍,后续将会继续完善和修改。