Sabit Nokta Q-Format Dönüştürücü

Q-format sabit noktaya dönüştürmek için bir değer ve kesir biti sayısını girin.

Nasıl hesaplanır?

n kesir biti için ölçek 2n olur. Gerçekten sabit noktaya modunda saklanan tamsayı ham = yuvarla(değer × 2n), temsil ettiği değer gerçek = ham ÷ 2n ve niceleme hatası değer − gerçek olur. Sabit noktadan gerçeğe modunda yazdığınız sayı ham tamsayı kabul edilir (ondalığı varsa tam sayıya yuvarlanır) ve hata sıfırdır. Çözünürlük bir adımın büyüklüğüdür, 1 ÷ 2n. Kesir biti sayısı 0 ile 62 arasında bir tam sayı olmalıdır; ham tamsayısı tam olarak gösterilemeyecek kadar büyük olan sonuçlar reddedilir. Yarım değerler sıfırdan uzağa yuvarlanır. Araç kelime uzunluğu uygulamaz, yani değerleri 16 ya da 32 bite kırpmaz veya sarmaz.

Örnek hesaplama

0,3 değerini Q15 biçimine (15 kesir biti) çevirelim. Ölçek 215 = 32.768 ve 0,3 × 32.768 = 9.830,4 olur; bu da 9.830 ham tamsayısına yuvarlanır. Geri çevirince 9.830 ÷ 32.768 = 0,29998779 bulunur. Hata 0,3 − 0,29998779 = 0,0000122070 olup 0,0000305176'lık adım büyüklüğünün (çözünürlüğün) içindedir. Yazılım 9830 saklar ve bunu yaklaşık 0,3 olarak yorumlar.

Bu örneği dene →

Sık yapılan hatalar

  • Mod gerçekten sabit noktaya iken ham tamsayıyı (ya da sabit noktadan gerçeğe modunda gerçek değeri) yazmak. Gerçekten sabit noktaya modunda 9830 yazarsanız tekrar ölçeklenir ve ham değer 322.109.440 çıkar.
  • Kesir biti sayısı n ile toplam kelime uzunluğunu karıştırmak. Q15 ya da Q1.15 için n = 15 girilir; işaret biti ve kelime boyutu burada sorulmaz.
  • Kelimenizin aralık sınırını unutmak. Araç kırpma yapmaz: 15 kesir bitiyle 2 değeri 65.536 ham sonucunu verir, bu da işaretli 16 bitlik bir yazmaca sığmaz (en büyük 32.767).
  • Tam bir dönüşüm beklemek. 0,3 gibi çoğu ondalık çözünürlüğün katı değildir, bu yüzden sıfırdan farklı küçük bir hata normaldir ve negatif de olabilir.
  • Kesir biti sayısını ondalıklı ya da 62'nin üstünde girmek. 2,5, -1 veya 63 gibi değerler sonuç vermez.

Bu hesaplama hakkında

Q-format (Qm.n gösterimi), kesir kısmı için n bit ayırarak gerçek bir sayıyı sabit noktalı tamsayı olarak temsil eder: saklanan ham tamsayı, gerçek değerin 2ⁿ ile çarpımına eşittir; örneğin 16 bitlik bir sözcükteki Q15 (Q1.15) değerinin çözünürlüğü 1/2¹⁵ ≈ 0,0000305 ve aralığı yaklaşık −1 ile 0,99997 arasındadır. Gerçek bir sayıyı Q-format'a dönüştürmek, değer × 2ⁿ ifadesini en yakın tamsayıya yuvarlamak anlamına gelir; bu da yuvarlanan tamsayı (geri ölçeklendiğinde) ile orijinal değer arasındaki farka eşit bir niceleme hatası doğurur.

Gömülü sistem ve DSP (dijital sinyal işleme) mühendisleri, donanımsal kayan nokta birimi bulunmayan mikrodenetleyici ve DSP çiplerinde Q-format kullanır — bu, ses kodekleri, motor kontrol yazılımı ve eski ARM Cortex-M ile TI TMS320 tasarımlarında yaygındır — çünkü sabit noktalı aritmetik, yazılımla taklit edilen kayan noktaya göre daha hızlı ve daha öngörülebilir çalışır. Bu hesaplayıcı her iki yönde dönüşüm yapar ve çözünürlük ile yuvarlama hatasını raporlayarak, yazılım geliştiricilerin belirli bir bit genişliğinin sinyal zincirleri için yeterince hassas olup olmadığını değerlendirmesini sağlar.

Bu faydalı oldu mu?

En fazla 3 tepki seçebilirsiniz.

Yorumlar (1)

  • Editör ekibi

    Kesirli bit sayısını seçmek için gereken hassasiyetle başlayın: çözünürlük 2'nin eksi n'inci kuvvetidir; yani 0,001 veya daha ince bir adım için en az 10 bit gerekir (yaklaşık 0,00098). Kelime uzunluğunuzdan bu bitler ve bir işaret biti çıktıktan sonra kalan, tam sayı aralığına ayırabileceğiniz bittir. Hangi kelime uzunluğunu hedefliyorsunuz, 16 mı 32 mi?

Popüler hesaplayıcılar

Tüm Hesaplayıcılar