Q格式

Q格式二進制定點數格式,其中會標示小數位元(也可能包括整數位元)的長度。例如Q15數表示分數部份有15個位元,而Q1.14數表示1個整數位元以及14個小數位元。

針對有號的定點數,有二種Q格式的表示方式。其中一種是將符號位元算在整數位元裡,但另外一種就不是。例如,16位元的有號整數(無小數位元)可以表示為Q16.0或Q15.0。因此,在用說明Q格式的有號定點數字時,可能也需要一併標示總位元數(在此處為16)。

Q格式是幾種廣為使用的定點数中的一種。定點数常用在不支援浮點運算器的硬體,或是用在需要固定解析度的應用。

特點

Q格式用來標示定點數,儲存以及運算都是以一般的二進位整數為基礎來處理,因此允許標準的整數硬體/算術邏輯單元來進行有理数運算。程式設計者可以依應用需求,選定其整數位元數、小數位元數(以及資料總位元數),而之後定點數的範圍以及解析度就會依整數位元數、小數位元數而不同。

有些DSP架構原生支持一些常用的Q格式(例如Q1.15),這種情形下,可以在一個指令下就進行四則運算,若是加減法,可以支援饱和运算,若是乘除法,可以有正規化的機能。不過大部份的DSP無此功能,若DSP架構不支持選定的Q格式,程式設計者就要自行再針對加減法進行饱和运算,針對乘除法進行正規化。

有號號Q格式的表示方式有兩種,都寫成Qm.n

  • Q表示這個數字是以Q格式表示,在德州仪器則用Q表示是有號的Q格式(Q是數學裡表示有理數的字母)
  • m.(可省略,若省略的話,假設是0或1)是數字在用二補數表示下的整數位元數,可能包括符位元,也可能不包括(這也是若m省略的話,假設是0或1的原因)。
  • n是數字中小數的位元數,也就是二進位表示時,在小數點右邊的二進位個數(若n = 0,表示Q格式數字是整數)。

一種表示方式將符號位元放在整數位元 m中一起計算[1][2],另一種則不是。確認方式可以將mn相加,看是否等於數字位元數,若相等,表示其符號位元放在整數位元 m,若比數字位元數少1,表示其其符號位元獨立計算。

此外,字母U可以放在Q前面,說明是無號數,例如UQ1.15,數值範圍是0.0 to +1.999969482421875 (也就是)。

有號的Q格式數值會用二補數儲存,正如大部份處理器處理整數的情形一樣。在二補數中,會用符號位元填滿沒有用到數字位元。

針對給定的Qm.n格式(假設符號位元也算在m個位元內),用m+n位元的有號整數來處理,再考慮其中有n位元是表示小數:

  • 其範圍為
  • 其解析度為

針對給定的UQm.n格式,用m+n位元的有號整數來處理,再考慮其中有n位元是表示小數:

  • 其範圍為
  • 其解析度為

例如Q15.1格式的數字:

  • 需要位元數為15+1 = 16位元
  • 其範圍為[-214, 214 - 2−1] = [-16384.0, +16383.5] = [0x8000, 0x8001 … 0xFFFF, 0x0000, 0x0001 … 0x7FFE, 0x7FFF]
  • 其解析度為2−1 = 0.5

Q格式和浮点数不同,Q格式數字的解析度不隨數字大小而不冋。

轉換

浮點數到Q格式

若要將浮點數(例如IEEE 754)轉換為Qm.n的格式:

  1. 將浮點數乘以2n
  2. 四捨五入到最接近的整數

Q格式到浮點數

若要將Qm.nQ格式的數數轉換為浮點數:

  1. 將整數轉換為浮點數
  2. 乘以2n

數學運算

Q格式的數字是二個整數的比例:會儲存分子,而分母固定是2n

考慮以下的例子;

  • Q8格式的分母是28 = 256
  • 1.5等於384/256
  • 會儲存384,256不儲存(因為是Q8格式,分母固定是256)

若Q格式的基底固定(n都相同),則Q格式的數學運算需維持分母不變。以下是二個相同Q格式數字的運算。

因為分母是二的次幂,因此和二的次幂相乘可以表示為二進制下的左移,和二的次幂相除可以表示為二進制下的右移,很多處理器的左移和右移會比乘除法要快。

為了要維持乘法和除法的精度,中間值需要用雙精度來儲存,在轉換回需要的Q格式數字之間,也需要先注意数值修约的處理。

兩個不同Q格式基底的數字也可以相乘除,相乘除的數字也可以用另一個基底表示。以下是二個Q格式數字(分母)和(分母)的運算,運算結果的分母是


若用C语言,相同Q格式基底數字四則運算對應的程式如下(以下的Q是表示小數部份的位元數)

加法

int16_t q_add(int16_t a, int16_t b)
{
    return a + b;
}

有飽和

int16_t q_add_sat(int16_t a, int16_t b)
{
    int16_t result;
    int32_t tmp;

    tmp = (int32_t)a + (int32_t)b;
    if (tmp > 0x7FFF)
        tmp = 0x7FFF;
    if (tmp < -1 * 0x8000)
        tmp = -1 * 0x8000;
    result = (int16_t)tmp;

    return result;
}

浮點數有±Inf,但Q格式沒有,若不進行飽和處理,二個很大的正數相加,可能會變成一個很大的負數。若是用組合語言,可以用Signed Overflow旗標來避免C語言實現時需要的型態轉換。

減法

int16_t q_sub(int16_t a, int16_t b)
{
    return a - b;
}

乘法

// precomputed value:
#define K   (1 << (Q - 1))
 
// saturate to range of int16_t
int16_t sat16(int32_t x)
{
	if (x > 0x7FFF) return 0x7FFF;
	else if (x < -0x8000) return -0x8000;
	else return (int16_t)x;
}

int16_t q_mul(int16_t a, int16_t b)
{
    int16_t result;
    int32_t temp;

    temp = (int32_t)a * (int32_t)b; // result type is operand's type
    // Rounding; mid values are rounded up
    temp += K;
    // Correct by dividing by base and saturate result
    result = sat16(temp >> Q);

    return result;
}

除法

int16_t q_div(int16_t a, int16_t b)
{
    /* pre-multiply by the base (Upscale to Q16 so that the result will be in Q8 format) */
    int32_t temp = (int32_t)a << Q;
    /* Rounding: mid values are rounded up (down for negative values). */
    /* OR compare most significant bits i.e. if (((temp >> 31) & 1) == ((b >> 15) & 1)) */
    if ((temp >= 0 && b >= 0) || (temp < 0 && b < 0)) {   
        temp += b / 2;    /* OR shift 1 bit i.e. temp += (b >> 1); */
    } else {
        temp -= b / 2;    /* OR shift 1 bit i.e. temp -= (b >> 1); */
    }
    return (int16_t)(temp / b);
}

相關條目

參考資料

  1. ^ ARM Developer Suite AXD and armsd Debuggers Guide. 1.2. 安謀控股. Chapter 4.7.9. AXD > AXD Facilities > Data formatting > Q-format. 2001 [1999]. ARM DUI 0066D. (原始内容存档于2017-11-04). 
  2. ^ Chapter 4.7.9. AXD > AXD Facilities > Data formatting > Q-format. RealView Development Sui (PDF). 安謀控股. 2006: 4–24 [1999]. ARM DUI 0066G. (原始内容存档 (PDF)于2017-11-04). 

延伸閱讀

外部連結

Read other articles:

Landry Bonnefoi Informasi pribadiNama lengkap Landry BonnefoiTanggal lahir 20 September 1983 (umur 40)Tempat lahir Villeparisis, PrancisTinggi 1,84 m (6 ft 1⁄2 in)Posisi bermain Penjaga gawangInformasi klubKlub saat ini BastiaNomor 16Karier senior*Tahun Tim Tampil (Gol)2000–2001 Cannes 0 (0)2001–2007 Juventus 0 (0)2003–2004 → Messina (pinjaman) 1 (0)2006–2007 → Metz (pinjaman) 1 (0)2007–2009 Dijon 24 (0)2009–2012 Amiens 30 (0)2012– Bastia 0 (0) * P...

 

1978 book by Betsy Byars The Cartoonist First editionAuthorBetsy ByarsIllustratorRichard CuffariCover artistRichard CuffariCountryUnited StatesLanguageEnglishGenreChildren's literaturePublisherViking Children's Books (US)The Bodley Head (UK)Publication dateApril 3, 1978Pages119ISBN978-0670205561Preceded byThe Pinballs Followed byThe Winged Colt of Casa Mia  The Cartoonist is a 1978 book by Betsy Byars.[1][2][3] Summary Alfie's grandfather is be...

 

Election in Delaware Main article: 1928 United States presidential election 1928 United States presidential election in Delaware ← 1924 November 6, 1928 1932 →   Nominee Herbert Hoover Al Smith Party Republican Democratic Home state California New York Running mate Charles Curtis Joseph T. Robinson Electoral vote 3 0 Popular vote 68,860 36,643 Percentage 65.03% 34.60% County Results Hoover  50-60%  60-70% President before...

  لمعانٍ أخرى، طالع نورثبورت (توضيح). نورثبورت     الإحداثيات 40°54′10″N 73°20′39″W / 40.9028°N 73.3442°W / 40.9028; -73.3442   [1] تاريخ التأسيس 1656  تقسيم إداري  البلد الولايات المتحدة[2][3]  التقسيم الأعلى هنتنغتون  خصائص جغرافية  المساحة 6.552766 كيل�...

 

Pour les articles homonymes, voir Richards. Davey RichardsDavey Richards en 2005.Données généralesNom de naissance Wesley David RichardsNom de ring Davey Richards Davey Phoenix Derek Billington Wayne KerrNationalité AméricainNaissance 1er mars 1983 (41 ans)OthelloTaille 5′ 8″ (1,73 m)[1]Poids 202 lb (92 kg)[1]Catcheur retraitéFédération Full Impact ProNew Japan Pro WrestlingPro Wrestling GuerrillaRing of HonorWorld Wrestling EntertainmentTotal Nonstop Act...

 

Gapai BintangmuAlbum kompilasi karya finalis Idola CilikDirilis2008Direkam2008GenrePopLabelMusica StudiosKronologi finalis Idola Cilik Gapai Bintangmu (2008) Gapai Mimpimu (2009)Gapai Mimpimu2009 Gapai Bintangmu adalah sebuah album kompilasi pertama karya finalis Idola Cilik. Dirilis pada tahun 2008. Lagu utamanya di album ini ialah Idola Cilik. Daftar lagu Idola Cilik - Seluruh finalis Papa - Kiki Aku & Bintang - Kiki, Gabriel, Sivia, Angel, Zahra Cinta Untuk Mama, Bahasa Kalbu (Medl...

Laut KaribiaSatelit Laut KaribiaPeta Laut KaribiaJenis perairanLautBagian dariSamudra AtlantikAsal sungaiMagdalenaAtratoChagresSan JuanCocoMotaguaTerletak di negara Daftar  Antigua dan Barbuda Aruba Bahama Barbados Belize Kepulauan Virgin Britania Raya Caribbean Netherlands Kolombia Kosta Rika Kuba Dominika Republik Dominika Grenada Guadeloupe Guatemala Haiti Honduras Jamaika Meksiko Montserrat...

 

Austronesian language spoken in Kiribati GilberteseKiribatiTaetae ni KiribatiNative toKiribatiEthnicityI-KiribatiNative speakers120,000 (2002–2019)[1]Language familyAustronesian Malayo-PolynesianOceanicMicronesianMicronesian ProperGilberteseWriting systemLatin script(Gilbertese alphabet)Official statusOfficial language in KiribatiRegulated byKiribati Language BoardLanguage codesISO 639-2gilISO 639-3gilGlottologgilb1244Map showing the pre-colonial distributio...

 

Символ Ле́ви-Чиви́ты — математический символ, который используется в тензорном анализе. Назван в честь итальянского математика Туллио Леви-Чивиты. Обозначается ε i j k {\displaystyle \varepsilon _{ijk}} . Здесь приведён символ для трёхмерного пространства, для других размерностей ...

Simplest non-trivial closed knot with three crossings This article is about the topological concept. For the protein fold, see trefoil knot fold. TrefoilCommon nameOverhand knotArf invariant1Braid length3Braid no.2Bridge no.2Crosscap no.1Crossing no.3Genus1Hyperbolic volume0Stick no.6Tunnel no.1Unknotting no.1Conway notation[3]A–B notation31Dowker notation4, 6, 2Last / Next01 / 41Otheralternating, torus, fibered, pretzel, prime, knot slice, reversible, ...

 

Reconstitution du Circuit des Routes Pavées au salon de l'automobile de Paris en 1923. Un secteur pavé à Bersée, encore intact. Les 6 Heures des Routes Pavées (ou Circuit automobile des Routes Pavées du nom même du trajet routier emprunté, appelé le plus souvent Circuit des Routes Pavées) étaient une ancienne épreuve d'endurance pour voitures de sport organisée durant les années 1920 à Pont-à-Marcq dans le département du Nord (à mi-chemin entre Lille et Douai), par le Club N...

 

Ottana OtzànaKomuneComune di OttanaLokasi Ottana di Provinsi NuoroNegaraItaliaWilayah SardiniaProvinsiNuoro (NU)Pemerintahan • Wali kotaFranco SabaLuas • Total45,07 km2 (17,40 sq mi)Ketinggian185 m (607 ft)Populasi (2016) • Total2,307[1]Zona waktuUTC+1 (CET) • Musim panas (DST)UTC+2 (CEST)Kode pos08020Kode area telepon0784Situs webhttp://www.comune.ottana.nu.it Ottana (bahasa Sardinia: Otzàna) adalah sebua...

1983 studio album by Lionel RichieCan't Slow DownStudio album by Lionel RichieReleasedOctober 14, 1983RecordedMarch–September 1983Studio Sunset Sound, Hollywood Ocean Way, Hollywood mixed at Motown Recording, Los Angeles[1] Genre Dance-pop[2] R&B pop[3] soul[4] Length40:56LabelMotownProducer James Anthony Carmichael Lionel Richie David Foster Lionel Richie chronology Lionel Richie(1982) Can't Slow Down(1983) Dancing on the Ceiling(1986) Singles fr...

 

Austronesian language spoken in New Caledonia KumakNêlêmwa-NixumwakNative toKoumac and Poum, New CaledoniaNative speakers1,100 (2009 census)[1]Language familyAustronesian Malayo-PolynesianOceanicSouthern OceanicNew Caledonian – LoyaltiesNew CaledonianNorthern New CaledonianExtreme NorthernKumakDialects Nêlêmwa (Nenema) Nixumwak (Kumak) Language codesISO 639-3neeGlottologkuma1276Kumak is classified as Vulnerable by the UNESCO Atlas of the World's Languages in Danger Kum...

 

German track and field athlete Gustav Wegner Medal record Men's athletics Representing  Germany European Athletics Championships 1934 Turin Pole vault Gustav Wegner (4 January 1903 – 7 June 1942) was a German track and field athlete who competed in the pole vault and the decathlon. He was the first ever European champion in the pole vault and the first German to clear four metres in the event. He was a five-time national champion at the German Athletics Championships and a stadium near...

  لمعانٍ أخرى، طالع جيمي هاريس (توضيح). جيمي هاريس معلومات شخصية اسم الولادة (بالإنجليزية: Tudor St. John Harris)‏  الميلاد 15 مايو 1963 (العمر 61 سنة)[1][2]وايت تشابل  مواطنة المملكة المتحدة  الأب ريتشارد هاريس  إخوة وأخوات داميان هاريس،  وجاريد هاريس  أقرباء أن...

 

Conservative Lutheran AssociationClassificationLutheranAssociationsNational Association of EvangelicalsRegionUnited StatesOrigin1965Members994Other name(s)World Confessional Lutheran Association (1965–1980) Part of a series onLutheranism in the United States Heritage of Mainline Protestantism and the Confessing Movement Augsburg Lutheran Churches Evangelical Lutheran Church in America Latvian Evangelical Lutheran Church in America Lutheran Congregations in Mission for Christ North American ...

 

American college football season 1922 Navy Midshipmen footballConferenceIndependentRecord5–2Head coachBob Folwell (3rd season)CaptainVincent ConroyHome stadiumWorden FieldSeasons← 19211923 → 1922 Southern college football independents records vte Conf Overall Team W   L   T W   L   T West Virginia   –   10 – 0 – 1 Tennessee Docs   –   7 – 0 – 1 Western Kentucky State Normal   ...

سلفادور لوريا (بالإنجليزية: Salvador Edward Luria)‏    معلومات شخصية اسم الولادة (بالإيطالية: Salvatore Edoardo Luria)‏  الميلاد 13 أغسطس 1912 [1][2][3][4]  تورينو  الوفاة 6 فبراير 1991 (78 سنة) [1][2][3][4]  ليكسينغتون  سبب الوفاة مرض قلبي وعائي  الإقامة الو...

 

? Vlag van Kumamoto (ratio 2:3) ? Vlag gebruikt op de 15e nationale atletiekwedstrijd van Kumamoto. (ratio 43:64) De prefecturale vlag van Kumamoto bestaat uit een wijnrood vlak met een wit gestileerd katakana-karakter ク [ku] in de vorm van het eiland Kyushu. De cirkel in het midden symboliseert de positie van Kumamoto in het midden van het eiland. De prefecturale vlag werd op 23 juli 1966 aangenomen. In 1960, zes jaar voordat de huidige prefecturale vlag werd aangenomen, maakte het uitvoer...