Sorumluluk reddi - Ben bir bilgi teorisyeni değilim, yalnızca C ve C ++ 'da (ve böylece sabit genişlikli türlerde) çalışan bir kod maymunu ve cevabım bu özel açıdan olacak.
Bu alan ortalama 8 ve 9, 4. ihtiyaç duyarken, 0 ile 7 3 bit temsil edilebilir - tek bir ondalık hane temsil 3.2 bit (8*3 + 2*4)/10 == 3.2
1 .
Bu göründüğünden daha az kullanışlı. Birincisi, belli ki biraz kesiriniz yok. Birincisi, yerel tam sayı türlerini kullanıyorsanız (yani, BCD veya BigInt değil), değerleri ondalık basamak dizisi (veya bunların ikilik eşdeğerleri) dizisi olarak saklamıyorsunuzdur. 8 bitlik bir tür, 3 ondalık basamağa kadar bazı değerleri depolayabilir, ancak tüm 3 basamaklı basamak değerlerini 8 bit olarak gösteremezsiniz - aralık [0..255]
. Değerleri [256..999]
sadece 8 bit olarak gösteremezsiniz .
Değerlerden bahsederken , uygulama beklediğinde ondalık kullanırız (örneğin, dijital bankacılık uygulaması). Ne zaman Bahsettiğimiz bit , genellikle onaltılık veya ikili kullanacağız (Neredeyse 3 ile bölünebilir olmayan 8 bit bayt ve 32 bit sözcükleri kullanmak sistemlerde işten beri sekizlik hiç kullanmıyorum).
Ondalık olarak ifade edilen değerler, ikili dizilere temiz bir şekilde eşleşmiyor. Ondalık değeri al 255
. Her parmağın ikili eşdeğerleri olacağını 010
, 101
, 101
. Ancak, değerin ikili gösterimi255
olduğunu 11111111
. İkili diziye olan değerdeki herhangi bir ondalık basamağın arasında yazışma yok . Ancak onaltılık rakamlarla doğrudan bir yazışma vardır - F == 1111
bu değer FF
onaltılı olarak gösterilebilir.
9 bitlik baytların ve 36 bitlik kelimelerin norm olduğu bir sistemdeyseniz, sekizlik doğal olarak üçlü olarak gruplandığı için octal daha mantıklı olur.
- Aslında, basamak başına ortalama 0 ve 1 yalnızca bir bit gerektirdiğinden, 2 ve 3 yalnızca 2 bit gerektirdiğinden daha küçüktür. Ancak pratikte 0 ile 7 arasında 3 bit almayı düşünüyoruz. Sadece hayatı birçok yönden kolaylaştırır.
d
, bir ondalık basamağı, aralığını kapsıyor0..9
.3*d
bit, üç ondalık basamak anlamına gelir ve aralıktaki tamsayıları temsil etmenize olanak sağlar0..999
. Bütün on bit (şimdi ikili düşünün) bir dizi verir0..1023
. 999, 1023'e oldukça yakın, ancak biraz daha az. Öyleyse, 10 /d
3'ten biraz daha az olmasını bekleyebilirsiniz .