首页
/
每日頭條
/
生活
/
定點整數和定點小數是根據什麼
定點整數和定點小數是根據什麼
更新时间:2026-02-17 16:55:51

在數字信号處理中往往都需要進行大量的數字運算,比如,數字信号的解調,需要采集大量的IQ數據對其進行解調運算。在實際的研究和學習中我們一般會在操作系統中利用豐富的軟件給我們提供的便捷的計算工具進行計算(Matlab、Python等),這可以很方便的處理我們所研究的數字信号。然而,學過計算機原理或者彙編語言的同學會清楚,數據的運算的最終是在計算機硬件上來完成的,我們在操作系統層面的數據運算往往意味着需要進行大量的資源的調度。雖然現在的計算機的性能已經非常的強大,但是對于面向應用的産品來說,其處理器性能往往和計算機不能相提并論。通常,在通信、圖像等數字信号處理中,會采用硬件芯片的方式進行數據運算(DSP、FPGA等),通過這種硬件芯片上進行數字信号運算,可以很好的提高運算效率,這也在工程應用中廣為采用的一種方式。在這些處理器中往往各種數據都是通過整數形式存儲(比如,通信中的IQ數值的存儲)。實際上,我們需要進行運算的數據大多都是小數,那麼,該怎麼解決呢?一般的我們可以通過定點數這種方式來表示小數。

什麼是定點數

定點數英文名叫Fixed Point Number,其關鍵地方就在定和點這兩個字上面,即在表示小數數據時,把小數點的位置已經約定好固定在某個位置。與之對應的是浮點數,其小數點的位置不是固定的,關于浮點數先不做展開。

定點整數和定點小數是根據什麼(談談小數的表示方法之定點數)1

在定點數中,小數點可以将數據分為整數和小數部分,因此我們可以約定小數點在數據中的不同位置,就可以表示不同大小和精度的小數。例如,當小數點位置約定在符号位和數值位之間,就表示純小數;當小數點約定在最末尾位置時,就可以表示純整數。

定點整數和定點小數是根據什麼(談談小數的表示方法之定點數)2

定點整數和定點小數是根據什麼(談談小數的表示方法之定點數)3

如何描述定點數的這種規則呢?其實,我們可以使用兩種方法來表示:

  • Q來表示法Qx,x表示小數的位數。
  • S表示法Sx.y,x表示整數位數,y表示小數位數。

我們知道在計算機中根據是否存在符号位可以分成無符号整數和有符号整數,當然,對于定點數也可以根據有無符号位分為:

  • 無符号定點數:無符号位
  • 有符号定點數:有符号位
無符号定點數

無符号定點數,數值在機器中字長的全部二進制位中沒有符号位,全都是數值位。例如,小數1.2轉換成16位的定數,小數點的位置約定在第14位和第15位之間。

定點整數和定點小數是根據什麼(談談小數的表示方法之定點數)4

根據計算結果,小數1.2可以用Q14格式的無符号定點數19661表示。

無符号定點數比較簡單,不存在負小數;但是,有符号定點數就沒這麼簡單了,因為存在正負數,其計算方法也不盡相同。

原碼、反碼、補碼

原碼、反碼、補碼在大多數的計算機編程相關的書籍裡基本上都會提到。在學習有符号定點數之前,我們需要先複習一下原碼、反碼和補碼。因為數據在計算中的存儲方式是以補碼的形式存儲的,在學習有符号定點數之前,所以,我們有必要先複習這部分内容。

  • 原碼:最高位作為符号位(無符号則沒有符号位),其他位是數據二進制真值絕對值。例如,無符号數5,其8位二進制數的原碼為0000 0101;有符号數5,其8位二進制的原碼為0000 0101;有符号數-5,其8位二進制的原碼1000 0101。
  • 反碼:正數的反碼是其原碼本身,負數的反碼在其原碼的基礎上符号位不變,其他位取反。例如,無符号數5,其8位二進制數的反碼為0000 0101;有符号數5,其8位二進制數的反碼為0000 0101;而有符号數-5,其8位二進制的反碼為1111 1010。
  • 補碼:正數的補碼就是其本身,負數的補碼是在其反碼基礎上加1。例如,無符号數5,其8位二進制數的補碼為0000 0101;有符号數5,其8位二進制數的補碼為0000 0101;而有符号數-5,其8位二進制的補碼為1111 1011。

對于正數來說,

原碼 = 反碼 = 補碼

對于負數來說,

反碼 = 符号位不變,原碼取反補碼 = 反碼 1

有符号定點數

有符号定點數,需要專門取一位數據位作為符号位,通常,符号位上的1表示負數,0表示正數,其餘位為數值位。例如,将小數0.8和-0.8轉成Q15格式的定點數。

定點整數和定點小數是根據什麼(談談小數的表示方法之定點數)5

求正數0.8的定點數:

求負數-0.8的定點數:

在有符号定點數中,需要要注意負數的計算與正數有所不同。

最後

定點數和浮點數都可以表示小數,而定點數的精度固定,表現範圍比較有限;但是,定點數在硬件上比較容易去實現,在實際的數據算法中,定點數運算效率比浮點數的運算效率有大大的提高,同時也降低了數據存儲資源。因此,定點數會被廣泛的應用到數字信号處理的各種應用場景中。

本文首發于公衆号【Will的大食堂】

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
臭豆腐是用糞水泡的嗎
臭豆腐是用糞水泡的嗎
臭豆腐不是用糞水泡出來的,制作它一般是将豆腐放入調制好的鹵水中浸泡,臭豆腐的臭味就是在這個浸泡過程中産生的。但市面上也有一些不良商家會用泔水等物制作臭豆腐,所以我們平時要去正規的小吃店購買臭豆腐。臭豆腐是不是用糞水泡的 臭豆腐是我國一種極具特色的傳統小吃,它聞起來帶有很濃郁的臭味,但吃起來卻有特殊的...
2026-02-17
西米露放冰箱要不要加水
西米露放冰箱要不要加水
西米露放進冰箱是不需要進行加水的,否則會導緻西米的口感降低,一般在保存的時候隻需要将它晾涼之後直接放到冰箱就可以了,第二天要是水分減少了,我們可以往裡面倒些椰汁,然後再放進微波爐裡加熱一下即可。西米露放冰箱怎麼進行保存 近些年來,市面上出現了很多非常好吃的食物,西米露就是其中之一,它又被稱為是西米谷...
2026-02-17
羊毛衫怎麼洗
羊毛衫怎麼洗
清洗羊毛衫是要先翻面,清洗時水溫保持在35℃左右,不能直接使用熱水,以免導緻其縮水變形,接着将羊毛衫上的污漬、領口、袖口等地打濕,沾點洗滌劑搓洗幹淨,放到水中浸泡10分鐘動手搓洗一下就可以了。如何清洗羊毛衫 在清洗羊毛衫的時候要先将它翻個面,不要用正面洗,以減少摩擦力,避免衣服起球。清洗的水溫要保持...
2026-02-17
小腸怎麼洗又快又幹淨
小腸怎麼洗又快又幹淨
想快速将小腸清洗幹淨就要先用流動的清水沖洗它的外壁,然後利用筷子給小腸翻面,再次沖洗它。接着準備一盆水并往其中加入食鹽攪拌均勻,将沖洗好的小腸放入鹽水中浸泡一段時間最後再沖洗一次即可。怎麼快速将小腸清洗幹淨 小腸是我們生活中非常常見的一種食材,它大多都是指豬的小腸。這種食材因為結構特殊非常難以清洗,...
2026-02-17
圍裙上的油漬怎麼洗掉
圍裙上的油漬怎麼洗掉
想要洗掉圍裙上面的油漬的話,我們隻需要先準備一盆溫水并把圍裙放入其中浸泡,若圍裙上油漬較多的話還可以往溫水中加入适量小蘇打。接着把洗潔精擠在圍裙上反複揉搓,再用清水将它沖洗幹淨即可。怎麼洗圍裙上的油漬 想要去掉圍裙上的油漬非常的簡單,我們隻需要先準備一盆溫水,然後把圍裙放入溫水中浸泡一段時間,接着把...
2026-02-17
Copyright 2023-2026 - www.tftnews.com All Rights Reserved