bin_dec_hex - başvuru kılavuzu, seçenekler, komut örnekleri


İSİM

bin_dec_hex - İkili, ondalık ve onaltılık gösterim nasıl kullanılır?

TANIM

Çoğu insan ondalık sayı sistemini kullanır. Bu sistem sayıları temsil etmek için on sembol kullanır. Bu on sembol tükendiğinde, her şeye yeniden başlarlar ve konumu sola doğru artırırlar. 0 rakamı yalnızca dizideki tek sembolse veya ilk değilse gösterilir.

Bu size şifreli geliyorsa, az önce rakamlarla söylediğim şey şu:

            0
            1
            2
            3
            4
            5
            6
            7
            8
            9
           10
           11
           12
           13

ve benzeri.

Dokuz rakamı her artırıldığında, 0'a sıfırlanır ve (sola doğru) önceki konum artırılır (0'dan 1'e). O zaman 9 sayısı 00009 olarak görülebilir ve 9'u artırmamız gerektiğinde, onu sıfıra sıfırlarız ve 9'dan hemen önceki basamağı artırırız, böylece sayı 00010 olur. 0). Ve elbette, bir sayının içinde veya sonunda herhangi bir yerde bulunuyorlarsa sıfırları yazarız:

"00010" -> " 0010" -> " 010" -> "  10"

Ama değil

"  1 ".

Bu oldukça basitti, bunu zaten biliyordunuz. Neden anlattım? Bilgisayarlar genellikle 10 farklı basamaklı sayıları temsil etmez. Yalnızca 0 ve 1 olmak üzere iki farklı sembol kullanırlar. Bu basamak grubuna aynı kuralları uygulayın ve ikili numaralandırma sistemini elde edin:

            0
            1
           10
           11
          100
          101
          110
          111
         1000
         1001
         1010
         1011
         1100
         1101

ve benzeri.

Satır sayısını sayarsanız bunların yine 14 farklı sayı olduğunu görürsünüz. Numaralar aynı ve ilk listedeki ile aynı anlama geliyor, biz sadece farklı bir gösterim kullandık. Bu, kullanılan gösterimi veya buna numaralandırma sistemi veya tabanı denildiği şekliyle bilmeniz gerektiği anlamına gelir. Normalde, kullanılan numaralandırma sistemini açıkça belirtmezsek, dolaylı olarak ondalık sistemi kullanırız. Başka bir numaralandırma sistemi kullanmak istiyorsak, bunu açıklığa kavuşturmamız gerekecek. Bunu yapmak için yaygın olarak benimsenen birkaç yöntem vardır. Yaygın biçimlerden biri, 1010(2) yazmaktır; bu, bir sayıyı ikili gösteriminde yazdığınız anlamına gelir. On numaradır. Tabanı belirtmeden 1010 yazarsanız, sayı 10 tabanı kullanılarak bin on olarak yorumlanır.

Kitaplarda başka bir biçim yaygındır. Alt simgeler kullanır (iki satır arasında aşağı yukarı küçük karakterler). Bu durumda parantezleri atlayabilir ve sayıyı normal karakterlerle, ardından hemen arkasına küçük bir iki yazabilirsiniz.

Kullanılan numaralandırma sistemine taban da denildiği için 1100 sayısı 2 tabanı, 12 sayısı 10 tabanından bahsediyoruz.

İkili sistemde, baştaki sıfırları yazmak yaygındır. Sayılar bağlama bağlı olarak dörtlü, sekizli veya onaltılı diziler halinde yazılır.

Bilgisayarlarla konuşurken (...programlama...) ikili formu kullanabiliriz, ancak sayıların büyük temsilleri olacaktır. 65'535 sayısı (ondalık sistemde genellikle bir ' okunabilirlik için üç basamaklı blokları ayırmak için kullanılır), 1 basamağının 16 katı olan 1111111111111111(2) olarak yazılır. Bu zor ve hataya açık. Bu nedenle, genellikle onaltılık olarak adlandırılan başka bir taban kullanırdık. 16 farklı sembol kullanır. Önce ondalık sistemdeki semboller kullanılır, ardından alfabetik karakterlerle devam edilir. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E ve F'yi elde ederiz. Bu sistem seçilmiştir çünkü onaltılık biçim çok kolay bir şekilde ikili sisteme dönüştürülebilir (ve geri dönebilir).

Sekizli sistem adı verilen, kullanımda olan başka bir sistem daha var. Bu eski günlerde daha yaygındı, ancak artık çok sık kullanılmıyor. Bazen kullanımda görebileceğiniz gibi, buna alışmalısınız ve aşağıda göstereceğiz. Diğer temsillerle aynı hikaye, ancak sekiz farklı sembolle.

        Binary      (2)
        Octal       (8)
        Decimal     (10)
        Hexadecimal (16)

        (2)    (8) (10) (16)
        00000   0    0    0
        00001   1    1    1
        00010   2    2    2
        00011   3    3    3
        00100   4    4    4
        00101   5    5    5
        00110   6    6    6
        00111   7    7    7
        01000  10    8    8
        01001  11    9    9
        01010  12   10    A
        01011  13   11    B
        01100  14   12    C
        01101  15   13    D
        01110  16   14    E
        01111  17   15    F
        10000  20   16   10
        10001  21   17   11
        10010  22   18   12
        10011  23   19   13
        10100  24   20   14
        10101  25   21   15

Günümüzde kullanılan bilgisayarların çoğu sekiz bitlik baytlar kullanıyor. Bu, bir seferde sekiz bit depoladıkları anlamına gelir. Sekizli sistemin bunun için neden en pratik olmadığını görebilirsiniz: Sekiz biti temsil etmek için üç haneye ihtiyacınız olacak ve bu, yalnızca iki biti (2+3+3) temsil etmek için bir tam rakam kullanmanız gerektiği anlamına gelir. =8). Bu bir israf. Onaltılık basamaklar için, tamamen kullanılan yalnızca iki basamağa ihtiyacınız vardır:

        (2)      (8)  (10) (16)
        11111111 377  255   FF

İkili ve onaltılı sayının neden hızlı bir şekilde dönüştürülebileceğini görebilirsiniz: Her onaltılık basamak için tam olarak dört ikili basamak vardır. Bir ikili sayı alın: sağdan dört basamak alın ve ondan onaltılık bir basamak yapın (yukarıdaki tabloya bakın). Basamak kalmayıncaya kadar bunu tekrarlayın. Ve tam tersi: Onaltılık bir sayı alın. Her basamak için ikili eşdeğerini yazın.

Bilgisayarlar (veya daha doğrusu üzerlerinde çalışan ayrıştırıcılar) 1234(16) gibi bir sayıyı dönüştürmekte zorlanırlar. Bu nedenle onaltılık sayılar bir önekle belirtilir. Bu önek, yazdığınız dile bağlıdır. Öneklerden bazıları C için 0x, Pascal için $, HTML için # şeklindedir. Bir sayı sıfır ile başlarsa sekizlik olduğunu varsaymak yaygındır. Ne olduğunu bildiğiniz sürece ne kullanıldığı önemli değil. Onaltılık için 0x, ikili için % ve sekizlik için 0 kullanacağım. Aşağıdaki sayıların hepsi aynıdır, yalnızca temsilleri (tabanı) farklıdır: 021 0x11 17 %00010001

Aritmetik ve dönüşüm yapmak için bir şeyi daha anlamanız gerekir. Bu zaten bildiğiniz ama belki de henüz görmediğiniz bir şeydir:

1234 yazarsanız (önek yok, bu yüzden ondalıktır) bin iki yüz otuz dört sayısından bahsediyorsunuz. Bir nevi formül olarak:

        1 * 1000 = 1000
        2 *  100 =  200
        3 *   10 =   30
        4 *    1 =    4

This can also be written as:

        1 * 10^3
        2 * 10^2
        3 * 10^1
        4 * 10^0

burada ^, gücü anlamına gelir.

10 tabanını ve 0,1,2 ve 3 konumlarını kullanıyoruz. En sağdaki konum 10 ile ÇARPILMAMALIDIR. Sağdan ikinci 10 ile bir kez çarpılmalıdır. Sağdan üçüncü 10 ile iki kez çarpılır. Bu, hangi pozisyonlar kullanılırsa kullanılsın devam eder.

Diğer tüm temsillerde aynıdır:

0x1234 olacak

        1 * 16^3
        2 * 16^2
        3 * 16^1
        4 * 16^0

01234 would be

        1 * 8^3
        2 * 8^2
        3 * 8^1
        4 * 8^0

Bu örnek ikili sistem için yapılamaz çünkü bu sistem yalnızca iki sembol kullanır. Başka bir örnek:

%1010 olurdu

        1 * 2^3
        0 * 2^2
        1 * 2^1
        0 * 2^0

Onu onaltılık biçimine dönüştürmek ve %1010 öğesini 0xA'ya çevirmek daha kolay olurdu. Bir süre sonra alışırsın. Artık herhangi bir hesaplama yapmanıza gerek kalmayacak, sadece 0xA'nın 10 anlamına geldiğini bilin.

Ondalık bir sayıyı onaltılıya dönüştürmek için sonraki yöntemi kullanabilirsiniz. Tahminleri yapabilmek biraz zaman alacaktır, ancak sistemi daha sık kullandığınızda daha kolay olacaktır. Daha sonra başka bir yola bakacağız.

Öncelikle diğer sistemde kaç tane pozisyon kullanılacağını bilmeniz gerekiyor. Bunu yapmak için, kullanacağınız maksimum sayıları bilmeniz gerekir. Göründüğü kadar zor değil. Ondalık olarak, iki basamakla oluşturabileceğiniz maksimum sayı 99'dur. Üç için maksimum: 999. Bir sonraki sayının fazladan bir konuma ihtiyacı olacaktır. Bu fikri tersine çevirin ve sayının 10^3 (10*10*10, 1000'dir) eksi 1 veya 10^2 eksi bir alınarak bulunabileceğini göreceksiniz.

Bu, onaltılık için de yapılabilir:

        16^4 = 0x10000 = 65536
        16^3 =  0x1000 =  4096
        16^2 =   0x100 =   256
        16^1 =    0x10 =    16

Bir sayı 65'536'dan küçükse, dört konuma sığar. Sayı 4'095'ten büyükse, 4. konumu kullanmalısınız. 4'096'yı sıfırın altına inmeden sayıdan kaç kez çıkarabileceğiniz, yazdığınız ilk rakamdır. Bu her zaman 1'den 15'e (0x1'den 0xF'ye) kadar bir sayı olacaktır. Diğer pozisyonlar için de aynısını yapın.

41'029 ile deneyelim. 16^4'ten küçük ama 16^3-1'den büyük. Bu, dört konum kullanmamız gerektiği anlamına gelir. Sıfırın altına inmeden 41'029'dan 16^3'ü on kez çıkarabiliriz. Bu nedenle en soldaki rakam A olacaktır, bu nedenle 0xA ????. Sayı 41'029 - 10*4'096=41'029-40'960=69'a düşürülür. 69, 16^3'ten küçüktür ancak 16^2-1'den büyük değildir. Bu nedenle ikinci basamak 0'dır ve şimdi 0xA0??'a sahibiz. 69, 16^2'den küçük ve 16^1-1'den büyüktür. 16^1'i (sadece düz 16'dır) dört kez çıkarabilir ve 0xA04'ü elde etmek için 4 yazabiliriz? 69'dan (69 - 4*16) 64 çıkarın ve son hane 5 --> 0xA045 olur.

Diğer yöntem, sayıyı sağdan oluşturur. 41'029'u tekrar deneyelim. 16'ya bölün ve kesir kullanmayın (yalnızca tam sayılar).

41029/16, 2564 ve kalan 5'tir. 5'i yazın. 2564/16, 160'tır ve kalan 4'tür. 45'i 0 ile başa ekleyin. 10/16 birin altındadır. Burada bitirin ve başına 0xA ekleyin. 0xA045 ile bitirin.

Hangi yöntemi kullanacağınız size kalmış. Sizin için ne işe yararsa onu kullanın. Her durumda hangi yöntemi kullandığımı söyleyemeden ikisini de kullanıyorum, sadece sayıya bağlı sanırım. Gerçek şu ki, programlama sırasında bazı sayılar sık sık ortaya çıkacaktır. Sayı aşina olduğum bir sayıya yakınsa, o zaman ilk yöntemi kullanacağım (32'770 gibi 32'768 + 2'ye giriyor ve sadece 0x8000 + 0x2=0x8002 olduğunu biliyorum).

İkili için aynı yaklaşım kullanılabilir. Taban 16 değil 2'dir ve konum sayısı hızla artacaktır. İkinci yöntemi kullanmanın avantajı, sıfır mı yoksa bir mi yazmanız gerektiğini çok kolay görebilmenizdir: ikiye bölerseniz kalan, çift sayıysa sıfır, tek sayıysa bir olur:

        41029 / 2 = 20514 remainder 1
        20514 / 2 = 10257 remainder 0
        10257 / 2 =  5128 remainder 1
         5128 / 2 =  2564 remainder 0
         2564 / 2 =  1282 remainder 0
         1282 / 2 =   641 remainder 0
          641 / 2 =   320 remainder 1
          320 / 2 =   160 remainder 0
          160 / 2 =    80 remainder 0
           80 / 2 =    40 remainder 0
           40 / 2 =    20 remainder 0
           20 / 2 =    10 remainder 0
           10 / 2 =     5 remainder 0
            5 / 2 =     2 remainder 1
            2 / 2 =     1 remainder 0
            1 / 2 below 0 remainder 1

Sonuçları sağdan sola doğru yazın: %1010000001000101

Dörde göre gruplandırın:

        %1010000001000101
        %101000000100 0101
        %10100000 0100 0101
        %1010 0000 0100 0101

Onaltılığa dönüştür: 0xA045

%1010000001000101 öğesini üçe göre gruplandırın ve sekizliye dönüştürün:

        %1010000001000101
        %1010000001000 101
        %1010000001 000 101
        %1010000 001 000 101
        %1010 000 001 000 101
        %1 010 000 001 000 101
        %001 010 000 001 000 101
           1   2   0   1   0   5 --> 0120105

        So: %1010000001000101 = 0120105 = 0xA045 = 41029
        Or: 1010000001000101(2) = 120105(8) = A045(16) = 41029(10)
        Or: 1010000001000101(2) = 120105(8) = A045(16) = 41029

İlk başta sayıları eklerken, onları ondalık biçimine dönüştürecek ve daha sonra toplamayı yaptıktan sonra orijinal biçimlerine geri döneceksiniz. Diğer sayı sistemini sık sık kullanırsanız, kullanılan tabanda doğrudan aritmetik yapabileceğinizi göreceksiniz. Herhangi bir temsilde aynıdır, sağdaki sayıları toplayın, sonuçtan en sağdaki rakamı yazın, diğer rakamları hatırlayın ve bir sonraki turda kullanın. Sağdan ikinci rakamla devam edin ve bu şekilde devam edin:

           %1010 + %0111 --> 10 + 7 --> 17 --> %00010001

Olacak

           %1010
           %0111 +
            ||||
            |||+-- add 0 + 1, result is 1, nothing to remember
            ||+--- add 1 + 1, result is %10, write down 0 and remember 1
            |+---- add 0 + 1 + 1(remembered), result = 0, remember 1
            +----- add 1 + 0 + 1(remembered), result = 0, remember 1
                   nothing to add, 1 remembered, result = 1
        --------
          %10001 is the result, I like to write it as %00010001

Düşük değerler için hesaplamaları kendiniz yapmaya çalışın ve ardından bir hesap makinesiyle kontrol edin. Hesaplamaları kendiniz ne kadar çok yaparsanız, hata yapmadığınızı o kadar çok anlayacaksınız. Sonunda, diğer tabanlarda da ondalık basamakta yaptığınız kadar kolay hesap yapacaksınız.

Rakamlar büyüdükçe, bir bilgisayara sadece güzel bir isim olsun diye bilgisayar denilmediğini fark etmeniz gerekecek. Birçok farklı hesap makinesi var, onları kullanın. Unix için Binary Calculator'ın kısaltması olan bc'yi kullanabilirsiniz. Yalnızca ondalık olarak değil, kullanmak isteyeceğiniz tüm tabanlarda (İkili dahil) hesaplar.

Windows kullanıcıları için: Hesap makinesini başlatın (başlat->programlar->donatılar->hesap makinesi) ve gerekirse görüntüle->bilimsel'i tıklayın. Artık bilimsel bir hesap makineniz var ve ikili veya onaltılık olarak hesaplayabilirsiniz.

YAZAR

Umarım örnekleri ve açıklamalarını beğenmişsinizdir. Bunu yaparsanız, diğer insanlara temel sorular sorduklarında onları bu belgeye yönlendirerek yardımcı olun. Sadece cevaplarını almakla kalmayacaklar, aynı zamanda çok daha fazlasını öğrenecekler.

Alex van den Bogaerdt