Bit Alanı Paketleyici Hesaplama
Tek bir tam sayıya paketlemek için her değeri ve bit genişliğini girin.
Sonuç
Nasıl hesaplanır?
Negatif olmayan en fazla üç tam sayı, tek bir tam sayının içine yan yana yerleştirilir; 1. alan en yüksek bitlerde, 3. alan en düşük bitlerdedir: paket = (v1 << (w2 + w3)) | (v2 << w3) | v3. Her w o alana ayrılan bit sayısıdır ve her değer 2w değerinden küçük olmalıdır, aksi halde sonuç çıkmaz. 3. alan isteğe bağlıdır: boş bırakılırsa hem değeri hem genişliği 0 sayılır. Ondalıklar tam sayıya kesilir; negatif değer ya da genişlik sonuç vermez. Genişliklerin toplamı 1 ile 63 bit arasında olmalıdır. Paketlenmiş sonuç onluk, on altılık ve toplam genişliğe sıfırla tamamlanmış ikilik tabanda gösterilir.
Örnek hesaplama
Bu, 16 bitlik bir piksel için RGB565 düzenidir: 5 bitte kırmızı 21, 6 bitte yeşil 42, 5 bitte mavi 10. Toplam genişlik: 5 + 6 + 5 = 16 bit. Kırmızı 6 + 5 = 11 bit sola kayar (21 × 2048 = 43.008). Yeşil 5 bit sola kayar (42 × 32 = 1.344). Mavi 10 olarak kalır. Toplam: 43.008 + 1.344 + 10 = 44.362. Araç paketlenmiş değeri üç biçimde, her satırda bir tane gösterir (onluk, on altılık, ikilik): 44.362 0xAD4A 0b1010110101001010
Sık yapılan hatalar
- Genişliğine sığmayan bir değer girmek. 5 bitlik alan 0 ile 31 arasını tutar; 32 sonuç vermez, alanı genişletin ya da değeri kontrol edin.
- 1. alanın en düşük bitlerde olacağını sanmak. 1. alan en anlamlı kısımdır; ekrandaki alan sırası yüksek bitten aşağıya doğru sıradır.
- Genişlik yerine alana sığan en büyük değeri yazmak (5 yerine 31). Genişlik bit sayısıdır, sığabilen en büyük sayı değildir.
- Ondalık ya da negatif sayıları işaretli değer gibi girmek. Kesirler kesilir, negatifler reddedilir; bu yüzden ikiye tümleyenli alanlar önce işaretsiz değere çevrilmelidir.
- 64 bitlik yazmaca paketlerken 63 bit sınırını unutmak. Toplam genişlik en fazla 63'tür; kullanılmayan alanları genişlik 0 ve değer 0 olarak bırakın.
Bu hesaplama hakkında
Bir bit alanı (bit field), birkaç küçük tam sayı değerini, daha büyük tek bir tam sayı içinde bitişik bit gruplarına paketler; böylece tek bir 32 bit veya 64 bit sözcük, örneğin 5 bitlik bir değeri, 8 bitlik bir değeri ve 3 bitlik bir değeri her biri için ayrı bir değişken — ve ayrı bellek — kullanmak yerine aynı anda barındırabilir. Bu hesaplayıcı, bit genişlikleriyle birlikte üç adede kadar değeri alır, her birini kendi konumuna kaydırır, OR işlemiyle birleştirir ve sonucu onluk, on altılık ve ikilik olarak gösterir.
Bit alanı paketleme, düşük seviye programlamada her yerde karşımıza çıkar: mikrodenetleyicilerdeki donanım çevre birimi yapılandırma yazmaçları belirli bit aralıklarını belirli ayarlara atar; ağ protokolü başlıkları (IPv4’ün sürüm/IHL baytı veya TCP bayrakları gibi) yükü en aza indirmek için birden çok alanı birkaç bayta paketler ve RGB565 gibi grafik biçimleri kırmızı, yeşil ve mavi kanalları tek bir 16 bitlik piksel değerinde paketler. Gömülü sistem ve sürücü geliştiricileri, donanım yazmaçlarını doğru okuyup yazmak için tam olarak bu tür bir paketleme kullanır.
Bu faydalı oldu mu?
En fazla 3 tepki seçebilirsiniz.
Popüler hesaplayıcılar
Kredi Hesaplama
Aylık taksit, toplam faiz ve ödeme planını hesaplayın.
Yüzde Hesaplama
Yüzde değişim, indirim ve oran hesaplamaları.
İndirim Hesaplama
İndirimli fiyatı, kazancı ve indirim tutarını hesaplayın.
Vücut Kitle Endeksi (VKİ)
Boy ve kiloya göre vücut kitle endeksini hesaplayın.
Yaş Hesaplama
Doğum tarihinden bugüne tam yıl, ay ve gün cinsinden yaşınızı hesaplayın.
Bileşik Faiz Hesaplama
Ana para, faiz oranı ve süreye göre bileşik faizle nihai tutarı hesaplayın.
Tüm Hesaplayıcılar
- Kredi Hesaplama
- Kar Hesaplama
- İndirim Hesaplama
- Vücut Kitle Endeksi (VKİ)
- Yüzde Hesaplama
- İdeal Kilo Hesaplama
- Yaş Hesaplama
- Gebelik Hesaplama
- Bileşik Faiz Hesaplama
- Bazal Metabolizma (BMR) Hesaplama
- Bahşiş Hesaplama
- Yakıt Maliyeti Hesaplama
- Tarih Farkı Hesaplama
- Uyku Döngüsü Hesaplama
- Günlük Su İhtiyacı Hesaplama
- Basit Faiz Hesaplama
- Kalp Atış Hızı Bölgeleri Hesaplama
- Koşu Temposu Hesaplama
- Evcil Hayvan Yaşı Hesaplama
- Kalori Yakım Hesaplama
- Makro Besin Dağılımı Hesaplama
- TDEE (Toplam Günlük Enerji İhtiyacı) Hesaplama
- Bel-Kalça Oranı Hesaplama
- Takdir ve Teşekkür Belgesi Hesaplama
- Tek Tekrar Maksimum (1RM) Hesaplama
- Yumurtlama (Ovülasyon) Hesaplama
- Elektrik Maliyeti Hesaplama
- Birim Fiyat Hesaplama
- Tasarruf Hedefi Hesaplama
- Başabaş Noktası Hesaplama
- Boya Hesaplama
- Vize-Final Ortalama Hesaplama
- İş Günü Hesaplama
- Saat Farkı (Süre) Hesaplama
- Yakıt Tüketimi Hesaplama
- Sıcaklık Birimi Çevirici
- Fayans (Seramik) Hesaplama
- En-Boy Oranı Hesaplama
- Roma Rakamı Çevirici
- Hedef Kilo Süresi Hesaplama
- Maaş Çevirici (Saatlik-Yıllık)
- Kredi Kartı Doğrulama (Luhn)
- Vücut Yüzey Alanı (BSA) Hesaplama
- Hissedilen Sıcaklık Hesaplama
- Ohm Kanunu Hesaplama
- PPI (Piksel Yoğunluğu) Hesaplama
- Molar Kütle Hesaplama
- Burç Hesaplama (Batı + Çin)
- IBAN Doğrulama
- Ayakkabı Numarası Dönüştürücü
- Ülke Bilgisi (Telefon Kodu) Sorgulama
- Saat Dilimi Farkı (Dünya Saati)
- CAGR (Bileşik Yıllık Büyüme) Hesaplama
- 72 Kuralı Hesaplama
- Kandaki Alkol (Promil) Hesaplama
- Yağsız Vücut Kütlesi (LBM) Hesaplama
- Pisagor Teoremi Hesaplama
- Hız Birimi Dönüştürücü
- İndirme Süresi Hesaplama
- Tarih Hesaplama (Gün Ekle/Çıkar)
Hesaplayıcı bulunamadı
Yorumlar (1)
Bir veri sayfasından yazmaç değeri oluştururken en üstten başlayın. Buradaki 1. alan en yüksek bitlere yerleşir; bu yüzden veri sayfasındaki alanları en anlamlı bitten aşağı doğru sıralayın. Sonda boş kalan alan için genişliğe 0 yazın. Yazmacın ortasında ayrılmış (reserved) bitler varsa onları da kontrol edin: araçta bunlar için ayrı bir yer yoktur, değeri 0 olan bir alan olarak ekleyin. Hangi yazmacı ya da protokol başlığını paketliyorsunuz?