Untuk apa angka oktal (basis 8) digunakan?

11

Java menyediakan cara untuk menulis literal angka dalam basis 2, 8, 10 dan 16.

Saya bertanya-tanya mengapa basis 8 disertakan, misalnya int x = 0123;?

Saya berpikir bahwa mungkin ada sesuatu yang mirip dengan fakta bahwa dalam heksadesimal kapasitas satu byte adalah FF + 1 , dan seterusnya.

jokinjo
sumber
7
Saya yakin pertanyaan Anda adalah "Untuk apa angka oktal digunakan?"
GetMeARemoteJob
Ya, begitulah seharusnya saya menjawab pertanyaan itu. Terima kasih atas semua jawaban yang menarik. Saya pikir itu mungkin memiliki dasar historis, tetapi saya belum memiliki pengalaman yang diperlukan untuk meletakkan jari saya di atasnya.
jokinjo

Jawaban:

16

Jawaban ini ditulis untuk pertanyaan awal, "Mengapa menulis angka di base 8 berguna?"

Itu untuk membuat bahasa menjadi akrab bagi mereka yang tahu C dll. Lalu pertanyaannya adalah mengapa mendukungnya pada mereka!

Ada arsitektur (berbagai PDP) yang menggunakan kata-kata lebar 18 bit (dan yang lain menggunakan kata-kata 36 bit), sehingga literal di mana digit adalah lebar 3 bit akan berguna.

Secara praktis, satu-satunya tempat yang saya lihat digunakan dalam kode Java adalah untuk menentukan izin unix-style, misalnya 0777, 0644dll.

(Jawabannya adalah mengapa hal ini didukung adalah "mendapatkan jawaban atas pertanyaan ini ").

Andy Turner
sumber
Oh, bagus, saya lupa tentang izin file di Linux! Minimal penggunaan bit yang tersedia ... oktal sesuai dengan tagihan.
sarlacii
1
@sarlacii "penggunaan minimal" tidak ada hubungannya dengan itu, "oktal" -ness int literal hanya ada dalam kode sumber. Sangat mudah untuk mendapatkan izin yang dilambangkan dengan oktal literal karena digit langsung sesuai dengan pengguna, grup, dan lainnya.
Andy Turner
Saya melakukan pemrograman pertama saya di komputer mainframe yang memiliki 60 bit kata dan 6 bit set karakter. Alamatnya 18 bit. Tentu saja kami menggunakan oktal. Ketika saya pertama kali bertemu heksadesimal, cukup aneh untuk melihat huruf dalam angka.
Ole VV
@Andy Saya masih menganggapnya sebagai penggunaan minimal ... pilihan panjang bit tidak hanya terkait kode. Itu juga dibatasi oleh sumber daya. misalnya. Saya mungkin memilih untuk menggunakan 8 bit untuk mengkodekan setiap izin, menutupi bit yang tidak digunakan, membutuhkan 3 byte, atau lebih tepatnya menggunakan minimum, 3 bit, dan kemudian mengkodekan angka oktal, untuk hanya menggunakan 1 setengah byte (menggunakan 4 sedikit lengket). Tapi ya, itu sewenang-wenang begitu Anda pergi ke tingkat bit ... karena Anda bisa membaca nilai oktal gabungan sebagai hex pula.
sarlacii
7

"Angka oktal tidak biasa seperti dulu. Namun, Oktal digunakan ketika jumlah bit dalam satu kata adalah kelipatan dari 3. Ini juga digunakan sebagai singkatan untuk mewakili izin file pada sistem UNIX dan representasi dari Nomor UTF8, dll. "

Dari: https://www.tutorialspoint.com/octal-number-system

yur
sumber
3
Tidak benar-benar "jumlah bit dalam satu kata" - seperti yang digunakan pada komputer mini 16-bit dalam bentuk bit tinggi 0/1 dan kemudian 5 angka oktal. Deskripsi yang lebih baik mungkin: Digunakan ketika ukuran bidang dalam kata adalah kelipatan 8 bit. Komputer-komputer yang sama memiliki (sering) 8 register - jadi register yang ditentukan dalam instruksi akan memiliki bidang 3 bit untuk nama register, instruksi register-to-register akan memiliki dua bidang 3-bit tersebut; komputer yang sama sering memiliki opcode 3-bit, atau opcode 3-bit dengan "escape" (misalnya, 0111) ke opcode 6-bit ; dll.
davidbak
4

Historis komputer (sains). Untuk merepresentasikan goup bit, basis 10 tidak cocok, basis 8 = 2 3 untuk 3 bit, dan basis 16 = 2 4 untuk 4 bit lebih cocok.

Keuntungan dari basis 8 adalah bahwa semua digit benar-benar digit: 0-7, sedangkan basis 16 memiliki "digit" 0-9A-F.

Untuk 8 bit basis byte 16 (heksadesimal) lebih cocok, dan menang. Untuk Unix base 8 octal, sering masih digunakan untuk rwxbit (baca, tulis, eksekusi) untuk pengguna, grup, dan lainnya; karenanya angka oktal seperti 0666 atau 0777.

Heksadesimal ada di mana-mana, tidak sedikit karena ukuran kata komputer saat ini adalah beberapa byte. Bahwa 8 bit bytemenjadi standar adalah cerita lain yang sulit terkait (2 3 bit, dan menangani).

Joop Eggen
sumber
0

Jawaban asli untuk "Untuk apa angka oktal (angka 8) digunakan?"

Penggunaan Umum Oktal

  • Sebagai singkatan dari biner: Untuk mesin komputasi (seperti UNIVAC 1050, PDP-8, ICL 1900, dll.), Octal telah digunakan sebagai singkatan dari biner karena ukuran kata mereka dapat dibagi tiga (setiap digit oktal mewakili tiga biner digit). Jadi dua, empat, delapan atau dua belas digit dapat dengan singkat menampilkan seluruh kata mesin. Ini juga memangkas biaya dengan memungkinkan tabung Nixie, tampilan tujuh segmen, dan kalkulator yang akan digunakan untuk konsol operator, di mana tampilan biner terlalu rumit untuk digunakan, tampilan desimal diperlukan perangkat keras yang rumit untuk mengkonversi radio, dan tampilan heksadesimal diperlukan untuk menampilkan lebih banyak angka .

  • Representasi kata 16-, 32-, atau 62-bit:Semua platform komputasi modern menggunakan kata-kata 16-, 32-, atau 64-bit, yang selanjutnya dibagi menjadi delapan-bit byte. Pada sistem seperti itu, diperlukan tiga digit oktal per byte, dengan digit oktal paling signifikan mewakili dua digit biner (ditambah satu bit byte signifikan berikutnya, jika ada). Representasi oktal dari kata 16-bit membutuhkan 6 digit, tetapi digit oktal yang paling signifikan mewakili (sangat tidak hati-hati) hanya satu bit (0 atau 1). Representasi ini tidak menawarkan cara untuk dengan mudah membaca byte yang paling signifikan karena dioleskan pada empat digit oktal. Oleh karena itu, heksadesimal lebih umum digunakan dalam bahasa pemrograman saat ini, karena dua digit heksadesimal tepat menentukan satu byte. Beberapa platform dengan kekuatan dua kata masih memiliki subword instruksi yang lebih mudah dipahami jika ditampilkan dalam oktal; ini termasuk keluarga PDP-11 dan Motorola 68000. Arsitektur x86 di mana-mana modern termasuk dalam kategori ini juga, tetapi oktal jarang digunakan pada platform ini.

  • Deskripsi pengodean : Sifat-sifat tertentu dari pengkodean biner opkode dalam arsitektur x86 modern menjadi lebih mudah terlihat ketika ditampilkan dalam oktal, misalnya byte ModRM, yang dibagi menjadi bidang 2, 3, dan 3 bit, sehingga oktal dapat berguna dalam menggambarkan pengkodean ini.

  • Perhitungan dan Izin Akses File: Oktal kadang-kadang digunakan dalam komputasi bukannya heksadesimal, mungkin paling sering di zaman modern dalam hubungannya dengan izin file di bawah sistem Unix (Dalam izin akses ke chmod). Ini memiliki keuntungan karena tidak memerlukan simbol tambahan sebagai digit (sistem heksadesimal adalah basis-16 dan karenanya membutuhkan enam simbol tambahan di luar 0-9).

  • Tampilan Digital: Angka oktal juga digunakan dalam menampilkan konten digital ke layar karena jumlah simbol yang digunakan lebih sedikit untuk representasi.

  • Representasi grafis string byte: Beberapa bahasa pemrograman (C, Perl, Postscript, dll.) Memiliki representasi teks / grafik dalam Oktal dengan lolos sebagai \ nnn. Representasi oktal sangat berguna dengan byte non-ASCII dari UTF-8, yang mengkode grup 6 bit, dan di mana setiap byte awal memiliki nilai oktal \ 3nn dan byte kelanjutan apa pun memiliki nilai oktal \ 2nn.

  • Early Floating-Point Arithmetics: Octal juga digunakan untuk floating-point di Ferranti Atlas (1962), Burroughs B5500 (1964), Burroughs B5700 (1971), Burroughs B6700 (1971) dan Burroughs B7700 (1972) komputer.

  • Dalam Transponder: Pesawat mengirimkan kode, dinyatakan sebagai angka empat oktal saat diinterogasi oleh radar darat. Kode ini digunakan untuk membedakan pesawat yang berbeda di layar radar.

Bacaan Lebih Lanjut: https://en.wikipedia.org/wiki/Octal

Jishan Shaikh
sumber
1
Saya menikmati membaca entri Wikipedia, terutama sedikit tentang menggunakan spasi di antara jari-jari untuk menghitung. Namun, sebagian besar, artikel itu dapat dikatakan sebagai pendorong pertanyaan saya. Seperti yang saya duga, ketidakterpisahan ukuran kata yang digunakan dalam arsitektur komputer saat ini membuat representasi oktal tidak berguna, dan salah satu paragraf yang Anda kutip sebagai "16-, 32-, 64-bit kata-kata ..." tidak jelas sama sekali. Bisakah Anda jelaskan bagaimana "byte paling signifikan dioleskan pada empat digit oktal" dan "Beberapa platform dengan kekuatan dua kata masih memiliki subword instruksi ..."
jokinjo