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.
Jawaban:
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
,0644
dll.(Jawabannya adalah mengapa hal ini didukung adalah "mendapatkan jawaban atas pertanyaan ini ").
sumber
"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
sumber
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
rwx
bit (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
byte
menjadi standar adalah cerita lain yang sulit terkait (2 3 bit, dan menangani).sumber
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
sumber