Mengapa oktal dan heksadesimal? Komputer menggunakan desimal biner dan manusia

16

Mengapa kita menggunakan basis lain yang bukan biner (untuk komputer) atau desimal (untuk manusia)?

Komputer akhirnya mewakili mereka dalam biner, dan manusia sangat suka mendapatkan representasi desimal mereka. Mengapa tidak menempel pada dua pangkalan ini?

Feora Quora
sumber
Saya cenderung berpikir tidak ada alasan kuat untuk menggunakan hex atau apapun dengan jumlah mesin terbang yang tinggi untuk angka. Bahkan lebih, saya cenderung berpikir bahwa perwakilan biner dapat menggantikan notasi lain untuk kasus umum di masa depan.
Mikhail V
@MikhailV Representasi hex jauh lebih ringkas daripada representasi biner. Saya akan mengatakan itu alasan yang cukup kuat untuk menggunakan mesin terbang dalam jumlah yang lebih besar daripada, katakanlah, 2.
Ben Jones

Jawaban:

19

Angka oktal (basis-8) dan heksadesimal (basis-16) adalah kompromi yang masuk akal antara sistem biner (basis-2) yang digunakan komputer dan sistem desimal (basis-10) yang digunakan kebanyakan manusia.

Komputer tidak bagus dalam banyak simbol, sehingga basis 2 (di mana Anda hanya memiliki 2 simbol) cocok untuk mereka sementara string yang lebih panjang, angka dengan lebih banyak digit, tidak terlalu menjadi masalah. Manusia sangat baik dengan banyak simbol, tetapi tidak begitu baik dalam mengingat string yang lebih panjang.

Oktal dan heks menggunakan keunggulan manusia bahwa mereka dapat bekerja dengan banyak simbol sementara itu masih mudah dikonversi bolak-balik antara biner, karena setiap digit hex mewakili 4 digit biner ( ) dan setiap digit oktal mewakili 3 ( ). Saya pikir hex menang atas oktal karena dapat dengan mudah digunakan untuk mewakili byte dan angka 16/32/64-bit. 8 = 2 316=248=23

dtech
sumber
8
Sebagai contoh, pertimbangkan nilai Hex RGB. Mudah diingat bahwa putih adalah #FFFFFF. Lebih sulit untuk diingat bahwa putih adalah 16777215 dalam desimal. Anda ingin menghapus komponen merah # EF439A? Anda mendapatkan # 00439A yaitu Anda hanya mengubah dua digit pertama menjadi 0. Dalam desimal, Anda harus mengurangi 15663104. Semoga beruntung mengingat itu.
jmite
3
Agar akurat, warna dalam notasi desimal akan menggunakan tiga kali lipat, dan putih akan menjadi (255, 255, 255). Kami menggabungkan nilai heksadesimal hanya karena mereka selalu 2 digit. Kita bisa melakukan hal yang sama dengan desimal menggunakan 0, kemudian putih akan menjadi 255255255 bukan 16777215.
Spidey
@Spidey Persis. Selain itu otak saya dapat mengurai sesuatu seperti (127.255.255) jauh lebih mudah dan saya bahkan dapat menebak bagaimana warna akan terlihat, karena saya dapat melihat proporsi jumlah tinta dan tidak harus menghitungnya dalam hex di kepala saya.
Mikhail V
13

Kami menggunakannya untuk kenyamanan dan singkatnya.

Hex dan Okt adalah representasi terkompresi biner yang sangat luar biasa. Hex khususnya sangat cocok untuk bentuk alamat memori yang diringkas. Setiap digit Oktober langsung memetakan ke 3 bit biner dan setiap digit hex ke 4 bit biner. Ini adalah hasil dari pangkalan (8 dan 16) menjadi kekuatan 2 ( dan 2 4 ). Sebagai contoh, saya dapat menulis biner 01101001 sebagai hex 69 atau jika saya memperpanjangnya dengan nol di depan sebagai 151 Oktober .23240110100169151

Jadi, katakan Anda memerlukan alamat memori 64 bit. Anda bisa melihat semua 64 bit biner, atau membuatnya terkondensasi menjadi 16 digit hex. Seringkali Anda tidak perlu membandingkan beberapa alamat untuk melihat apakah alamatnya sama atau berdekatan. Apakah Anda lebih suka melihat 64 bit atau 16 digit?

Logan Mayfield
sumber
5
Oktal memiliki manfaat tidak menambahkan simbol digit dan mungkin lebih praktis pada zaman 6-bit karakter (dan non-power-of-dua kata yang umum, misalnya, 12-bit PDP-8, 18-bit PDP- 1 [register register untuk CDC 6x00], register operan 36-bit 36-bit untuk register CDC 6x00). Perpindahan ke karakter oktet / byte dan kekuatan dua kata membuat heksadesimal lebih menarik.
Paul A. Clayton
"Apakah kamu lebih suka melihat 64 bit atau 16 digit?" Tentu saja saya akan melihat bit yang dikelompokkan. Tapi karena couse tidak dalam notasi "01", yang jelek dan menyakitkan mataku. Dan aku bahkan tidak tahu seberapa banyak hex menyakiti mataku.
Mikhail V
@MikhailV: Apa yang Anda maksud dengan notasi "" 01 "? Anda mengatakan Anda lebih suka melihat bit tetapi tidak dalam notasi "" 01 "- notasi apa yang akan Anda gunakan. Jika Anda mengatakan hex menyakiti mata Anda, saya tidak dapat berpikir bahwa Anda mungkin telah berlatih lebih banyak pada desimal daripada pada hex. (Sebenarnya saya pikir itu adalah seks (solo) yang dikatakan buruk untuk mata Anda, tapi itu cerita lain.)
PJTraill
Saya lebih suka ini daripada jawaban dtech yang saat ini lebih populer karena menekankan kemudahan penggunaan, tetapi Anda mungkin telah menunjukkan bahwa tidak hanya representasi yang lebih pendek tetapi juga variasi angka yang lebih besar membuatnya lebih mudah untuk mengetahui di mana Anda saat membaca angka dalam hex atau oktal.
PJTraill
@ PaulA.Clayton: poin bagus; Keuntungan lain pada PDP-11 adalah meskipun kata-kata (unit operasi alami) adalah 16 bit, sebagian besar kode instruksi jatuh secara alami ke dalam operasi 2-bit dan empat grup 3-bit yang mewakili nomor register dan mode alamat, yang keduanya memiliki 8 kemungkinan, dari dua argumen. Favorit saya: 014747 = MOV - (PC), - (PC), yang mengisi memori dengan dirinya sendiri (jika diizinkan).
PJTraill
5

Angka-angka biner dalam teks adalah buang-buang ruang.

252n-1

Karolis Juodelė
sumber
2

pengantar

Seperti yang telah disebutkan oleh jawaban lain, mungkin ada notasi yang berbeda untuk tujuan dan kendala yang berbeda. Notasi sebenarnya adalah pengkodean sebagai urutan karakter, dan kita tahu dari studi tentang algoritma dan struktur data bahwa ada banyak cara kita dapat menyandikan konsep abstrak, daftar atau himpunan misalnya, tergantung pada apa yang ingin kita lakukan dengannya . Dalam hal ini sebagian besar kenyamanan algoritmik.

Saat mempertimbangkan representasi angka, hal yang sama berlaku. Di dalam komputer, semuanya biner di tingkat terendah, meskipun representasi orang asing dapat digunakan untuk beberapa aplikasi.

Di luar komputer, kami menggunakan segala jenis representasi manusia yang dapat dipahami, tergantung pada kenyamanan manusia mengenai jenis nilai yang diwakili. Representasi biner seringkali terlalu panjang dan tidak terstruktur untuk dibaca dan ditulis dengan mudah, sehingga membuat heksadesimal atau oktal. Pilihannya mungkin sering berkaitan dengan cara informasi disusun dalam kata biner, yang tidak selalu dimaksudkan untuk mewakili angka.

Tetapi, ketika hanya mempertimbangkan angka , yaitu representasi angka, ada baiknya melihat sistem representasi angka lainnya untuk memahami bahwa faktor utama adalah: fisiologi, kebiasaan, dan kenyamanan. Kenyamanan tentu saja merupakan faktor utama yang menciptakan keragaman, karena tergantung pada konteks penggunaan.

Tampilan yang lebih luas

2n

Tubuh pertanyaan tampaknya sama sekali tidak terbatas pada komputer, dan manusia telah dan masih menggunakan beberapa sistem penomoran lainnya. Beberapa dari mereka bahkan digunakan di dalam komputer, misalnya ketika berhadapan dengan bilangan bulat panjang (belum termasuk angka non integer ).

Komentar pertama adalah bahwa ketika orang menghitung dalam ribuan, atau jutaan sebagai satu unit, ini masih dianggap desimal, karena ini adalah kekuatan 10. Jadi orang mungkin bertanya-tanya mengapa oktal atau heksadesimal tidak boleh dianggap hanya variasi pada biner. Salah satu alasan yang mungkin adalah jumlah simbol yang digunakan untuk mewakili angka (meskipun itu masalah yang dapat diperdebatkan, seperti yang akan kita lihat dengan sistem lain).

Kemudian, mengenai manusia, mereka menggunakan beberapa sistem di basis 5, yang disebut sistem quinary . Sebenarnya, sebagian besar sistem ini adalah dengan dua pangkalan, yang kedua adalah 2 atau 4, bergantian dengan basis lima, yang membuatnya setara dengan basis 10 (desimal) atau basis 20 (vigesimal). Tebak dari mana asalnya :)

Sistem basa ganda ini disebut sistem bi-quinary atau quadri-quinary. Quinary murni jarang digunakan.

Angka Romawi dapat dilihat sebagai sistem bi-quinary (yang merupakan indikasi bagaimana melakukan aritmatika dengan mereka). Sempoa Cina dan Jepang menggunakan bi-quinary. Quadri-quinary digunakan oleh suku Maya.

Alasan menggunakan sistem mungkin banyak. Salah satu alasan bagus adalah bahwa itu adalah desain lokal pertama, dan orang-orang sekarang terbiasa. Sebagai contoh, orang mungkin bertanya-tanya juga mengapa orang-orang berbahasa Inggris masih menggunakan sistem penomoran yang sangat aneh ketika mencoba mengukur jarak. Anda bisa berdebat bahwa ini masalah banyak unit, bukan penomoran, tetapi itu adalah pernyataan yang sangat lemah. Angka digunakan terutama untuk mengukur sesuatu.

Alasan lain untuk menjaga sistem adalah kenyamanan dalam konteks yang diberikan. Mungkin ada pertukaran antara jumlah simbol yang berbeda, atau posisi pada sempoa, dan jumlah simbol yang diperlukan untuk membentuk angka yang cukup besar. Basis 2 bekerja dengan 2 simbol yang berbeda, tetapi memiliki banyak kejadian, yang mungkin tidak nyaman untuk representasi material. Basis Vigesimal 20 akan membutuhkan dua puluh simbol, dan tabel perkalian yang sangat besar yang tidak akan diingat orang. Tetapi sistem bi-quinary atau quadri-quinary jauh lebih mudah dikelola, terutama untuk membangun sempoa. Sistem quinary murni mungkin akan lebih baik, tetapi bertentangan dengan kebiasaan dan intuisi berdasarkan fisiologi. Dan selalu menyenangkan untuk dapat menggunakan jari kita untuk menghitung, ketika kita tidak tahu apa-apa.

Tapi itu belum semuanya.

Salah satu sistem yang sangat tua dan sangat umum adalah sistem sexagesimal yang digunakan untuk mengukur waktu dan sudut (tapi kita tahu mereka terkait, melalui rotasi Bumi). Menggunakan basis 60, tetapi tidak menggunakan 60 simbol karena terlalu banyak. Jadi ia bergantung pada sistem lain untuk merepresentasikan simbolnya (seperti sistem desimal).

Lingkaran dapat dibagi dalam 6 bagian yang sesuai dengan sudut 60 derajat, yang paling sederhana untuk dibangun dengan segitiga sama sisi. Kemudian Setiap derajat adalah 60 menit busur, masing-masing dibagi dalam 60 detik.

Menurut wikipedia

Itu berasal dari bangsa Sumeria kuno pada milenium ke-3 SM, diturunkan ke Babilonia kuno, dan masih digunakan — dalam bentuk modifikasi — untuk mengukur waktu, sudut, dan koordinat geografis.

Mengingat asal itu adalah sistem yang cukup nyaman, pada saat matematika hampir tidak memasuki masa bayi. Tidak hanya sudut 60⁰ yang mudah digambar, tetapi 60 memiliki banyak faktor, sehingga memungkinkan untuk dibagi dalam banyak cara dengan bilangan bulat, tanpa sisa.

12×5=60

Tetapi ada cara lain untuk mencapai 60, seperti sistem Babilonia vigesimal-ternary .

Kenapa kita masih menggunakan sistem sexagesimal. Saya kira kita sudah terbiasa dengan hal itu, dan kita mungkin memiliki terlalu banyak masalah yang saling bertentangan sehingga suatu perubahan tidak bisa dibenarkan sepenuhnya.

Sangat menarik untuk dicatat bahwa ada banyak interaksi antara sistem penomoran dan sistem satuan. Tapi ini harus diharapkan karena ukuran adalah peran utama angka. Ini terlihat dalam pertentangan antara metrik desimal dan biner untuk ukuran memori .

babou
sumber
3
Itu mungkin karena judulnya mengatakan "Mengapa hex, oktal atau heksadesimal?"
Fizz
1
@RespawnedFluff Ucapan yang bagus. Maka pertanyaan saya bisa meluas ke pertanyaan. Saya tidak bermaksud mengatakan jawaban lain tidak menarik. Tetapi pandangan yang lebih luas menunjukkan motivasi yang lebih baik untuk berbagai sistem. Ini mendukung beberapa jawaban yang sudah diberikan. Pada dasarnya motivasi adalah kebiasaan dan kenyamanan. Tetapi kenyamanan sangat tergantung pada konteks. Dikotomi ukuran memori adalah yang baru-baru ini dibuat, dan menggambarkan poinnya.
babou
2
Brevity adalah suatu kebajikan, pertanyaan ini tidak memerlukan prosa 1000 kata, juga tidak sebagian besar sangat relevan. Anda juga gagal menjawab pertanyaan.
dtech
"Ketika orang menghitung dalam ribuan, ..., ini masih dianggap desimal, karena ini adalah kekuatan 10. Jadi orang mungkin bertanya-tanya mengapa oktal atau heksadesimal tidak boleh dianggap hanya variasi pada biner." Karena ribuan hanyalah penghilangan dari digit, biasanya 0's. Ini berbeda dari basis-1000 yang akan menggunakan 1000 simbol yang berbeda untuk setiap angka 0-999.
dtech
1
@ Techech Terima kasih. Saya lupa pengantar atau ringkasan yang biasanya saya miliki di depan jawaban saya. Dan ini membawa saya ke poin penting yang tampaknya diabaikan oleh jawaban lain. Tidak setiap kata biner dimaksudkan sebagai angka. Berusaha mendapatkan pandangan yang lebih luas adalah yang membantu menemukan masalah.
babou
-1

Komputer memahami angka-angka biner dan dalam biner, bobot angka tersebut berkuasa 2, oleh karena itu jumlah digit untuk mewakili angka mungkin besar tergantung pada jumlahnya.

Katakanlah, 64 dalam desimal dapat diwakili oleh 7 bit sedangkan untuk mewakili angka 5000 kita membutuhkan 13 bit.

Sistem angka oktal dan heksadesimal adalah cara kompak untuk merepresentasikan angka biner.

Mayank Kumar Gupta
sumber
2
Bagaimana jawaban ini [What advantage is there to using a base different from ten or (a power of) two?]- atau bagaimana lagi yang Anda tafsirkan Why not stick to [bases 2 and 10]??
greybeard