Sekizli sayılar (taban 8) ne için kullanılır?


11

Java, 2, 8, 10 ve 16 numaralı tabanlara sayısal değişmezler yazmak için yollar sağlar.

Baz 8'in neden dahil edildiğini merak ediyorum , örn.int x = 0123; ?

Ben onaltılık bir bayt kapasitesi FF + 1 , ve benzerleri gerçeğine benzer bir şey olabileceğini düşünüyorum .


7
Sorunuzun "Sekizli rakamlar ne için kullanılıyor?"
7'de GetMeARemoteJob

Evet, soruyu bu şekilde ifade etmeliydim. Tüm ilginç cevaplar için teşekkürler. Tarihsel bir temeli olabileceğini düşündüm, ama parmağımı koymak için gerekli deneyime sahip değildim.
jokinjo

Yanıtlar:


16

Bu cevap asıl soru için yazılmıştır, "8 numaralı tabana bir sayı yazmak neden yararlıdır?"

Dili, C vb.

18 bit genişliğinde sözcükler (ve diğerleri 36 bit sözcükler) kullanan mimariler (çeşitli PDP'ler) vardı , bu nedenle basamağın 3 bit genişliğinde değişmez değerler yararlı olacaktır.

Pratik olarak, sadece ben Java kodunda kullanılan gördük yerleştirmek örneğin Unix tarzı izinleri belirtmek içindir 0777, 0644vb

(Niçin desteklendiğine dair yan yana dil cevabı " bu soruya oy vermek ").


Oh, iyi bir nokta, Linux'ta dosya izinlerini unuttum! Kullanılabilir bitlerin minimum kullanımı ... sekizlik faturaya uyar.
sarlacii

1
@sarlacii "minimal kullanım" ın bununla hiçbir ilgisi yoktur, int değişmezinin "sekizli" -kimliği yalnızca kaynak kodunda bulunur. Sekizlik bir hazır bilgi ile gösterilen izinleri almak daha kolaydır, çünkü rakamlar doğrudan kullanıcıya, gruba ve diğerlerine karşılık gelir.
Andy Turner

İlk programımı 60 bit kelime ve 6 bit karakter setine sahip bir ana bilgisayar üzerinde yaptım. Adresler 18 bit idi. Tabii ki sekizli kullandık. Onaltılıyla ilk tanıştığımda, bir sayıdaki harfleri görmek oldukça tuhaftı.
Ole VV

@Andy hala minimal kullanım olarak düşünüyorum ... bit uzunluğu seçimi sadece kod ile ilgili değil. Aynı zamanda kaynak ile sınırlıdır. Örneğin. Her bir izni kodlamak için 8 bit kullanmayı, kullanılmayan bitleri maskeleme, 3 bayt gerektirmeyi veya daha doğrusu minimum, 3 bit kullanmayı ve daha sonra sekiz rakamı kodlamayı, yalnızca 1 buçuk baytı (4. biraz yapışkan). Ama evet, bit seviyesine gittikten sonra keyfi ... yine de birleşik sekizlik değeri onaltılı olarak okuyabilirsiniz.
sarlacii

7

"Sekizlik sayılar eskiden olduğu kadar yaygın değildir. Ancak, sekizlik bir sözcükteki bit sayısı 3'ün katları olduğunda kullanılır. Ayrıca UNIX sistemlerinde dosya izinlerini temsil etmek ve UTF8 numaraları vb. "

Gönderen: https://www.tutorialspoint.com/octal-number-system


3
Gerçekten "bir kelimedeki bit sayısı" - 16 bit minibilgisayarlarda yüksek 0/1 ve daha sonra 5 sekizli sayı şeklinde kullanıldığından. Daha iyi bir açıklama şu olabilir: Bir sözcükteki alanın boyutu 8 bitin katı olduğunda kullanılır. Aynı bilgisayarlarda (sık sık) 8 yazmaç vardı - bu nedenle, bir talimatta belirtilen bir yazmaç, bir kaydı adlandırmak için 3 bitlik bir alana sahip olacaktı, bir kayıttan yazma yazmaçımıza böyle iki 3 bitlik alan olacaktı; aynı bilgisayarlarda genellikle 3 bitlik bir opcode veya 6 bitlik bir opcode'a "çıkışlı" (örneğin, 0111) olan 3 bitlik bir opcode vardı; vb.
Davidbak

4

Bilgisayarın tarihçesi (bilim). Bir bit grubunu temsil etmek için bir taban (10) uymaz, taban (3) bit için 8 = 2 3 ve 4 bit için taban 16 = 2 4 daha iyi oturur.

Taban 8'in avantajı tüm basamakların gerçekten basamak olmasıdır: 0-7, taban 16 ise 0-9A-F "basamaklarına" sahiptir.

8 bitlik bir bayt tabanı 16 (onaltılık) için daha uygun ve kazanılır. Unix base 8 octal için genellikle rwxkullanıcı, grup ve diğerleri için bitler (okuma, yazma, yürütme) için kullanılır; dolayısıyla 0666 veya 0777 gibi sekizli sayılar.

Onaltılık her yerde bulunur, en azından bilgisayarların kelime boyutlarının günümüzde birden çok bayt olması nedeniyle değil. 8 bitin bytebir standart haline gelmesi, diğer zor bir hikaye (2 3 bit ve adresleme).


0

"Sekizli sayılar (taban 8) ne için kullanılır?"

Sekizlik Yaygın Kullanım

  • İkili kısaltması olarak: Bilgi işlem makineleri için (UNIVAC 1050, PDP-8, ICL 1900 vb. Gibi), sekizlik ikili kelimenin kısaltması olarak kullanılmıştır, çünkü kelime boyutları üçe bölünebilir (her sekizlik basamak üç ikiliktir) basamak). Böylece, iki, dört, sekiz veya on iki hane kısaca tüm makine kelimesini gösterebilir. Ayrıca, ikili ekranların kullanılamayacak kadar karmaşık olduğu operatör konsolları için Nixie tüplerinin, yedi bölümlü ekranların ve hesap makinelerinin kullanılmasına izin vererek maliyetleri düşürdü, ondalık ekranlar, radyonları dönüştürmek için karmaşık donanıma ve daha fazla sayı görüntülemek için gereken onaltılık ekranlara ihtiyaç duydu. .

  • 16-, 32- veya 62-bit kelimeler gösterimi:Tüm modern bilgi işlem platformları, sekiz bit bayta ayrılan 16, 32 veya 64 bit sözcükler kullanır. Bu tür sistemlerde, bayt başına üç sekizli basamak gerekli olacaktır, en önemli sekizlik basamak iki ikili rakamı temsil eder (artı bir sonraki anlamlı baytın bir biti varsa). 16 bitlik bir kelimenin sekizli gösterimi 6 basamak gerektirir, ancak en anlamlı sekizlik basamak (oldukça yetersiz) yalnızca bir biti (0 veya 1) temsil eder. Bu temsil, en önemli baytı kolayca okumanın bir yolunu sunmaz çünkü dört sekizli basamağa bulaşır. Bu nedenle, onaltılık rakamlar günümüzde programlama dillerinde daha yaygın olarak kullanılmaktadır, çünkü iki onaltılık basamak tam olarak bir bayt belirtir. İki kelime gücüne sahip bazı platformlarda hala sekizlik olarak görüntüleniyorsa daha kolay anlaşılan talimat alt sözcükleri bulunur; buna PDP-11 ve Motorola 68000 ailesi dahildir. Günümüzün her yerde bulunan x86 mimarisi de bu kategoriye ait, ancak sekizli bu platformda nadiren kullanılıyor.

  • Kodlama açıklamaları: Modern x86 mimarisinde opcodların ikili kodlamasının bazı özellikleri, sekizli olarak görüntülendiğinde daha kolay anlaşılır hale gelir, örneğin, 2, 3 ve 3 bitlik alanlara bölünmüş ModRM baytı, bu nedenle sekizli tanımlamak için yararlı olabilir bu kodlamalar.

  • Hesaplamalar ve Dosya erişimi İzinler: Sekizlik bazen onaltılı yerine hesaplamada kullanılır, belki de modern zamanlarda Unix sistemleri altındaki dosya izinleriyle birlikte (chmod'a erişim izni olarak). Rakam olarak fazladan sembol gerektirmeme avantajına sahiptir (onaltılı sistem base-16'dır ve bu nedenle 0-9 ötesinde altı ek simgeye ihtiyaç duyar).

  • Dijital Ekranlar: Sekizli sayılar, sunum için kullanılan daha az sayıda simgeye sahip olduğundan, dijital içeriği bir ekranda görüntülemek için de kullanılır.

  • Bayt dizelerinin grafik gösterimi: Bazı programlama dilleri (C, Perl, Postscript, vb.) Octal'da metinler / grafikler ile \ nnn olarak kaçındı. Sekizli gösterim, 6 bitlik grupları kodlayan ve herhangi bir başlangıç ​​baytının sekizlik değerine \ 3nn ve herhangi bir devam eden baytın sekizlik değere \ 2nn sahip olduğu ASCII olmayan bayt UTF-8 ile özellikle kullanışlıdır.

  • Erken Kayan Nokta Aritmetiği: Sekizlik aynı zamanda Ferranti Atlas (1962), Burroughs B5500 (1964), Burroughs B5700 (1971), Burroughs B6700 (1971) ve Burroughs B7700 (1972) bilgisayarlarında kayan nokta için de kullanıldı.

  • Transponderlerde: Uçak, yer radarıyla sorgulandığında dört sekizli sayı olarak ifade edilen bir kod iletir. Bu kod, radar ekranındaki farklı uçakları ayırt etmek için kullanılır.

Diğer Kaynaklar: https://en.wikipedia.org/wiki/Octal


1
Wikipedia girişini okumaktan, özellikle parmaklar arasındaki boşlukları saymaktan biraz keyif aldım. Ancak, çoğunlukla makalenin sorumun itici gücü olduğu söylenebilir. Şüphelendiğim gibi, mevcut bilgisayar mimarisinde kullanılan kelime boyutlarının bölünemezliği, sekizlik gösterimi kullanışlı kılmaz ve "16-, 32-, 64-bit kelimeler ..." olarak bahsettiğiniz paragraflardan biri net değildir. “En önemli baytın dört sekizli basamağa bulaştığını” ve “İki kelimeden oluşan bir güç büyüklüğüne sahip bazı platformlarda hâlâ komut alt sözcükleri var…”
açıklayabilir misiniz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.