Daha iyi bir Türkiye mümkün! Türkiye'nin girişimcilik ve inovasyon topluluğu·2018'den beri
Rastgele başlık

İnovasyon ve Girişimcilik Sözlüğü

/sozlukinovanadolu

inovanadolu Sözlük, içeriği kullanıcılar tarafından oluşturulan, inovasyon, girişimcilik, teknoloji vb. konularda başlıkların oluşturulduğu ve tanımlandığı, kategorisindeki en büyük Türkçe kaynaktır.

binary-coded decimal

Kavramlar 1 tanım · 1 yazar · 25.09.2018 · açan @newday
@sammy · 18 gün önce
kısaltması bcd, türkçesi ikili kodlanmış onlu. bir sayıyı bütün olarak binary sisteme çevirmek yerine her onlu basamağını ayrı ayrı 4 bit ile kodlama yöntemi. 1995 sayısı normal ikili gösterimde 11111001011 iken bcd'de 0001 1001 1001 0101 olur: bin, dokuz, dokuz, beş. her dörtlü 0000 ile 1001 arasında kalır; 1010'dan 1111'e kadar olan altı kombinasyon geçersizdir ve tam da bu boşluk bcd'nin hem gücü hem zayıflığıdır.

neden böyle bir şey var: bilgisayar decimal sistemde düşünen insanlarla çalışıyor ve bazı onlu sayıların ikilide tam karşılığı yok. 0.1 ikili sistemde sonsuz devirli bir kesir; bu yüzden kayan noktalı aritmetikte 0.1 + 0.2 sonucu 0.30000000000000004 çıkar. bankacılık, muhasebe, vergi hesabı gibi işlerde bir kuruşluk sapma bile kabul edilmez; bcd ise her basamağı olduğu gibi sakladığı için 0.1 tam olarak 0.1'dir. ibm'in 1960'lardan bu yana anaişlem bilgisayarlarında ve cobol dilinde parasal alanların bcd tabanlı "packed decimal" tipinde tutulmasının sebebi bu. bugün fintech uygulamalarının sql tarafında tutar alanlarını float yerine decimal tipinde tanımlaması aynı ihtiyacın devamı.

ikinci büyük kullanım alanı göstergeler. yedi parçalı (7 segment) led göstergeler, dijital saatler, hesap makineleri, tartılar ve sayaçlar rakamları tek tek gösterir. sayı zaten bcd tutuluyorsa her dörtlü doğrudan bir rakama karşılık gelir; ikiliden onluya çevirmek için bölme yapmaya gerek kalmaz. 7447 gibi klasik entegreler tam olarak bunu yapar: 4 bit bcd alır, yedi parçalı göstergeyi sürer. gerçek zamanlı saat çiplerinin (ds1307, ds3231 ve benzerleri) saat, dakika, saniye yazmaçlarını bcd tutması da bu yüzden; arduino ile saat okuyan herkes bir noktada "neden 0x59 geliyor" diye şaşırıp bcd'yi öğrenir.

iki biçimi var. unpacked (paketlenmemiş) bcd'de her rakam bir byte kaplar, üst dört bit boş ya da sabit bir değerle doludur; ascii rakamlarının (0x30 ile 0x39 arası) alt dörtlüsü zaten bcd'dir, o yüzden metinden sayıya geçiş neredeyse bedava. packed (paketlenmiş) bcd'de bir bayta iki rakam sığar, sağdaki dörtlü işaret için ayrılabilir (c pozitif, d negatif). ibm formatı bu; 1234567 gibi yedi basamaklı bir sayı işaretiyle birlikte dört bayta iner.

aritmetik nasıl yapılıyor: iki bcd rakamı normal ikili toplama devresiyle toplanır, sonuç 9'u geçerse ya da dörtlüden elde çıkarsa sonuca 6 eklenir. altı sayısı tesadüf değil; 16 ile 10 arasındaki farkı kapatıp geçersiz altı kombinasyonu atlatır. 8 + 5 örneği: ikilide 1101 çıkar, geçersiz, 0110 eklenince 1 0011 olur, yani elde 1 ve rakam 3, toplam 13. intel 8080'den bu yana x86 ailesinde bulunan daa (decimal adjust after addition) komutu bu düzeltmeyi tek adımda yapar; z80 ve 6502 de benzer komutlarla gelir, eski assembly kitaplarının vazgeçilmez konusudur. 64 bit modda intel bu komutları kaldırdı, çünkü bcd aritmetiğinin yükü artık yazılım kütüphanelerinde.

bedeli depolama verimi. dört bit 16 değer taşıyabilirken bcd bunun yalnızca 10'unu kullanır; üç basamaklı bir sayı için 12 bit harcanır, oysa 1000 değer 10 bit'e sığar. kayıp yüzde 17 civarında ve büyük sayı dizilerinde ciddi yer tutar. çarpma ve bölme de ikiliye göre daha çok işlem ister. bu yüzden genel amaçlı cpu ve ram tasarımında ikili sistem kazandı; bcd, insanla temas eden uçlarda (giriş, gösterim, para) hayatta kaldı.

varyantları da var. 8421 en yaygını, ağırlıklar bit sırasıyla 8, 4, 2, 1. excess-3 kodunda her rakama 3 eklenerek kodlanır (0 için 0011), böylece 9'un tümleyeni bitleri ters çevirerek bulunur, eski mekanik ve erken elektronik hesap makinelerinde sevilmesinin sebebi bu. aiken 2421 kodu da kendi kendine tümleyen bir koddur. gray kod ise bcd değildir ama aynı dönemde aynı kaygıyla (bir seferde tek bit değişsin) tasarlandığından ders kitaplarında yan yana anlatılır.

modern dünyada tamamen ölmedi: ieee 754 standardının 2008 sürümü onlu kayan noktalı sayı biçimlerini tanımlar ve bunların yoğun paketleme yöntemi olan dpd (densely packed decimal) üç onlu rakamı 10 bit'e sığdırarak klasik bcd'nin verim kaybını neredeyse sıfırlar; ibm power işlemcileri bu aritmetiği donanımda yapar. python tarafında decimal modülü, java'da bigdecimal, veritabanlarında decimal ve numeric tipleri aynı problemi yazılımla çözer. barkodlarda ve qr kod içeriklerinde rakam dizilerinin sıkıştırılması, hata denetiminde checksum hesabı gibi yerlerde de rakam bazlı düşünmenin izleri sürer.

girişimci için özeti: para tutan her yazılımda ondalık sayıyı ikili kayan noktaya emanet etme. bcd'nin kendisini kullanmak zorunda değilsin ama arkasındaki fikri, yani onlu basamakları olduğu gibi saklama fikrini, decimal tipleriyle her gün kullanıyorsun. bu kavramı anlamayan ekiplerin ilk faturalama modülünde kuruş farklarıyla boğuştuğunu çok gördüm.
0 bağlantı #1
Tanım yaz
Bu başlığa tanım eklemek için üye olmalısın. Giriş yap ya da üye ol.

Yeni başlık aç

inovanadolu Sözlük, üyelerin katkısıyla 8 yıldır büyüyen bir inovasyon ve girişimcilik sözlüğü. Başlık açmak üç adım:

1

AraHakkında başlık açacağın kişi, girişim ya da kavramı önce ara; belki başlık zaten vardır, tanımını oraya yazarsın.

2

OluşturAradığın başlık sözlükte hiç yoksa, aynı sayfada kategori seçip ilk tanımı yazarak başlığı açarsın.

3

İçerikİlk tanım bilgi içermeli; yalnızca kişisel bir değerlendirme olmamalı. Kaynak göster, gerekirse başka başlıklara bağlantı ver.

Öncesinde Sözlük Kuralları'nı okumanı öneririz.

Tanımı düzenle

Eski metin geçmişte saklanır; tanımda "düzenlendi" rozeti görünür.