Saya hanya membenturkan kepala ke meja selama 20 menit melihat bug yang sangat aneh di PHP, dan kemudian saya menyadari ada oktal. Oktal <% (* & #>.
Singkatnya, saya mengisi beberapa literal dengan nol sehingga kodenya akan selaras, saya tahu, kesalahan besar. Lupa tentang oktal.
Pertanyaannya adalah, adakah yang menggunakan oktal untuk hal lain selain izin file? (Saya pribadi lebih suka chmod ugo+rwx
tetapi saya mengerti bahwa jika mereka harus dihasilkan secara programatik, akan berguna untuk menggunakan oktal.) Tetapi apakah mereka berguna dalam situasi lain?
0o
awalan (yang konsisten dengan0x
dan0b
tapi mungkin agak sulit dibedakan dari00
). Dan sejak Python 3, angka nol di depan tambahan merupakan kesalahan sintaks untuk mencegah bug semacam ini.Jawaban:
Menurut Wikipedia , oktal tidak biasa seperti dulu. Seperti yang telah disebutkan orang lain, di masa lalu, sistem yang digunakan memiliki kata 12/24/36-bit, yang lebih mudah diwakili dalam oktal daripada heksadesimal, tetapi saat ini, arsitektur x86 dan i64 menggunakan bit 16/32/64 kata, yang lebih mudah diwakili dalam heksadesimal dan benar-benar jelek di oktal.
Namun, penggunaan saat ini meliputi:
\3nn
apa pun dan byte lanjutan apa pun\2nn
)0
dalam beberapa bahasa pemrograman yang mendukung oktal, seperti yang ditulis pengguna ini .Perhatikan bahwa bahasa pemrograman modern terkadang tidak mendukung oktal lagi karena kurangnya kasus penggunaan dan potensi bug. C # adalah contoh, seperti Eric Lippert menulis ini di edisi 3 dan 4 TCPL :
Terkait, dan hanya untuk referensi dan rasa ingin tahu, Code, The Hidden Bahasa Komputer memiliki penjelasan yang mudah tindak yang sangat baik pada sistem bilangan oktal dan lainnya pada halaman 55-63 .
sumber
parseInt(011)==9
Oktal banyak digunakan sekitar 50 tahun yang lalu oleh Digital Equipment Corp. (DEC) dan perusahaan lain yang memiliki komputer dengan kata 12-bit (mis. PDP-8) atau kelipatan enam lainnya, seperti 18 dan 36 (mis. UNIVAC 1108 ). Saya menggunakan PDP-8 dan UNIVAC 1108 di sekolah pascasarjana. Karakter di kedua mesin biasanya menggunakan enam bit, bukan 8.
Format instruksi PDP-8 - perhatikan bit diberi nomor 0 -> 11. Bit 0 adalah MSB (bit paling signifikan).
Ketika DEC mengeluarkan 16-bit PDP-11, mereka terus menggunakan oktal dalam dokumentasi mereka alih-alih heksadesimal seperti yang digunakan oleh produsen komputer mini lainnya yang keluar dengan mesin 16-bit pada saat itu. Ini mungkin karena beberapa bidang 3-bit dalam format instruksi PDP-11 seperti Register, Mode dan Src / Dest yang meminjamkan diri mereka untuk diterjemahkan sebagai digit oktal. (Terima kasih kepada John Strohm karena menunjukkan ini.)
Menariknya, ketika Motorola keluar dengan mikroprosesor 68000 mereka, yang sangat dipengaruhi oleh PDP-11 dan memiliki bidang Mode dan Registrasi 3-bit yang sama dalam instruksi, mereka memilih untuk hanya menggunakan heksadesimal dalam dokumentasi mereka.
Karena PDP-11 menggunakan notasi oktal, kode izin asli untuk Unix, yang pertama kali muncul di PDP-11, juga menggunakan oktal. Warisan ini tetap ada di Linux, di mana perintah chmod masih menggunakan oktal untuk menentukan masing-masing bidang 'rwx' tiga bit.
Beberapa hal sepele lainnya - CompuServe, yang merupakan layanan online dial-up yang banyak digunakan pada 1980-an dan awal 1990-an (sebelum dibayangi oleh AOL), dijalankan dengan minicomputer DEC, setidaknya pada awalnya. Semua ID pengguna adalah angka, dan pada beberapa titik saya membuat pengamatan bahwa mereka tidak pernah memasukkan 8 atau 9 di dalamnya, sehingga mereka berada di oktal. ID CIS lama saya adalah 70205.
sumber
Heathkit menggunakannya untuk panel depan H-8 mereka, dan untuk daftar bahasa rakitan perangkat lunak panel depan mereka (disebut PAM-8). Kencan sendiri, saya tahu.
Saat ini oktal sangat jarang; semua orang tampaknya menggunakan hex. Namun angka masih terlihat seperti angka dalam oktal, dan Anda tidak perlu deretan tombol tambahan untuk digit A hingga F.
sumber
Salah satu alasan mengapa oktal melihat penggunaan adalah karena basis terbesar adalah kekuatan 2 yang mana Anda tidak memerlukan karakter khusus - yaitu, semua digit dapat berupa angka. Basis 16 (yang berikutnya dari basis 8) membutuhkan digit non-numerik (biasanya A, B, C, D, E, F).
sumber
Saya menggunakan oktal setiap hari. Setiap kali saya perlu chmod file saya menggunakan oktal (saya pra-tanggal notasi u + r ...). Setiap kali saya ingin menanamkan karakter kontrol di dalam string saya menggunakan oktal ... (Ya, saya bisa menggunakan hex, tetapi oktal adalah apa yang saya gunakan).
sumber
Siapa pun yang perlu mengekspresikan kombinasi bit yang dikelompokkan dalam bertiga.
Mengapa ada yang menggunakan hex?
Hal-hal di luar kepala saya yang dinyatakan sebagai angka oktal:
ncurses
perpustakaansumber
7 * 6
atau07 * 06
? Kami menggunakan desimal untuk merepresentasikan angka karena kami dapat menanganinya dengan baik dan hex untuk mewakili angka yang sangat dekat dengan bagaimana mesin menyimpannya. Dan kita sering melakukan ini. Situs ini penuh dengan buktinya.Kembali ketika saya bekerja pada mainframe CDC (dengan kata 60-bit, kata 12-bit untuk PPU), semua dump inti dan semacamnya dilakukan dalam oktal (20 digit oktal per kata, 4 per kata PPU).
sumber
Seperti heksadesimal, notasi oktal kadang-kadang digunakan untuk menentukan kode karakter. Ini bisa berguna karena alasan yang sama dengan heksadesimal: lebih kompak daripada biner, tetapi sangat mudah diterjemahkan ke biner di kepala Anda.
sumber
Seperti Hex, angka oktal mudah dikonversi dari biner. Cukup kelompokkan angka biner dalam kelompok tiga, mulai dari kanan.
sumber
Nggak. Tidak pernah menggunakannya. Bahkan untuk mengatur izin file, karena saya jarang melakukannya, saya kesulitan membaca.
Jadi ya, ada manfaat nyata konversi dari dan ke biner.
Namun, seperti yang sudah ditunjukkan oleh @Mason, hex jauh lebih "alami", karena 2 digit hex menghasilkan satu byte. Sangat praktis untuk mewakili warna 24/32 bit RGB / ARGB, alamat IP, masker byte, dll. Oktal di sisi lain tidak terlalu praktis, karena Anda jarang memiliki skenario di mana Anda bekerja dalam hal grup 3-bit.
Izin file sebenarnya satu-satunya hal yang bisa saya pikirkan. Dan jika tidak ada area penggunaan sampai sekarang, saya ragu akan ada satu. Sejak 20 tahun terakhir ruang menjadi sangat murah, menjadi sangat tidak biasa untuk mengemas informasi dengan sangat ketat, dengan biaya penyelarasan, kemudahan penggunaan, dan ekstensibilitas.
sumber
Sedikit kesamping, tetapi penggunaan umum ada di London Underground. Setiap kereta memiliki identitas fisik, dan identitas terpisah dalam jadwal yang ditampilkan saat dalam pelayanan - lihat di sini: https://upload.wikimedia.org/wikipedia/commons/4/49/LUL-S-Stock-at -Watford.jpg (perhatikan 402 di bagian atas layar tujuan). Meskipun elektronik untuk monitor berbasis standar desimal, Anda tidak pernah melihat angka 8 atau 9 karena terikat dengan perangkat keras berbasis oktal lama dalam sistem pensinyalan.
sumber