Notasi untuk bilangan biner seperti 1000100B - 1

"Hai, Amigo!"

"Hai, Bilaabo!"

"Saya ingin memberi tahu Anda sedikit tentang sistem penomoran yang berbeda."

"Anda sudah pernah mendengar bahwa orang menggunakan sistem desimal. Inilah fakta utama dari sistem ini:

1)  10 digit digunakan untuk menulis angka: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

2)  Angka 543 berarti 5 ratusan + 4 puluhan + 3 satuan.

"Ini sama dengan menulis 5*100 + 4*10 + 3*1, yang dapat ditulis sebagai 5*10 2 + 4*10 1 + 3*10 0 .

Perhatikan bahwa ribuan, ratusan, puluhan, dan satuan adalah pangkat dari angka 10.

1) Satu adalah 10 pangkat nol.

2)  Sepuluh adalah 10 pangkat pertama.

3) Seratus adalah 10 pangkat dua.

4)  Seribu adalah 10 pangkat tiga, dst.

"Ya. Mengerti."

"Tapi sekarang bayangkan kita hanya memiliki 8 digit. Kemudian kita memiliki sistem oktal. Inilah fakta utamanya:"

1)  8 digit digunakan untuk menulis angka: 0, 1, 2, 3, 4, 5, 6, 7.

2)  Angka 543 8 artinya 5*8 2 +4*8 1 +3*8 0 . Dengan kata lain, 5*64 + 4*8 + 3*1 = 320+32+3 = 320+32+3=355 10

Saya menulis 8 dan 10 sebagai subskrip untuk menunjukkan berapa banyak digit yang digunakan untuk mewakili angka tersebut.

"Kurasa aku mengerti. Kurasa aku bisa mengonversi angka dari sistem oktal ke desimal. Tapi mungkin aku tidak bisa sebaliknya."

"Tidak terlalu sulit. Bayangkan Anda perlu menggunakan beberapa truk untuk memindahkan tumpukan pasir. Anda memiliki truk sampah, truk biasa, dan truk yang sangat kecil. Tapi truk tidak bisa jalan kalau tidak penuh."

"Bagaimana kamu akan melakukannya?"

"Pertama, saya akan mengisi truk sampah, karena itu yang terbesar. Kemudian, ketika saya melihat tidak ada cukup pasir untuk mengisi truk, saya akan beralih ke kendaraan yang lebih kecil. Dan kemudian yang lebih kecil lagi."

"Ini sebenarnya sangat mirip di sini. Mari kita coba ubah angka 355 10 kembali ke oktal."

"Pertama, kita membaginya dengan 64 (8 2 ) dan mendapatkan 5 dengan sisa 35. Artinya digit pertama angka kita adalah 5. Kemudian kita membagi sisanya dengan 8 (8 1 ) dan mendapatkan 4 dengan sisa dari 3. Jadi, kita mendapatkan angka 543 8 ."

"Ngomong-ngomong, kamu juga bisa bergerak ke arah lain. Lagi pula, 543 8 == 5*64+4*8+3 == ((5)*8+4)*8+3. Oktal kami "puluhan " dan "ratusan" harus dibagi dengan 8. Oleh karena itu, sisa pembagian dengan 8 akan menjadi digit oktal kita."

"Pertama, mari kita bagi 355 dengan 8. Kita mendapatkan 44 dengan sisa 3. Artinya, 355=44*8+3. Dan 44 dapat direpresentasikan sebagai 5*8+4. Jadi, 355= (5*8+ 4)*8+3; Ini digit kita: 5, 4, 3. Angka yang kita cari adalah 543 8 ."

"Kurasa aku mengerti, tapi aku perlu sedikit berlatih untuk memahami semuanya."

"Pemrograman sering melibatkan penggunaan angka dengan basis yang berbeda (yaitu jumlah digit yang digunakan dalam sistem penomoran). Yang paling populer adalah 2, 8, 10, 16, dan 64."

"Tapi mengapa ini perlu? Mengapa kita membutuhkan angka yang diwakili oleh 2, 8, 16, atau 64 digit?"

"Ini tentang bagaimana prosesor bekerja secara internal. Sangat sederhana, jika arus mengalir melalui kabel, maka kita katakan nilainya adalah 1; jika tidak ada arus, maka nilainya adalah 0. Semua angka disimpan dalam sel memori. Ini sel memiliki desain yang sangat mendasar. Dan sel hanya dapat menyimpan 0 atau 1."

"Tetapi penyederhanaan seperti itu (hanya 0 atau 1) memungkinkan elemen di dalam prosesor dan memori menjadi sangat kecil. Prosesor modern dan modul memori mencakup miliaran elemen berbeda. Dan luasnya seringkali tidak lebih dari satu sentimeter persegi."

"Wah. Sekarang aku tahu."

"Sekarang kita beralih ke bilangan biner. Di sini kita memiliki hal yang sama dengan oktal, hanya saja lebih mudah."

1)  2 digit digunakan untuk menulis angka: 0, 1.

2)  Angka 101 2 artinya 1*2 2 + 0*2 1 + 1*2 0 . Dengan kata lain, 1*4+0*2+1*1 =4+1=51 10

"Ya. Aku ingat. Satu sel, yang bisa memiliki nilai 0 atau 1, disebut bit. Tapi sel itu tidak bisa menyimpan banyak informasi, jadi mereka digabungkan menjadi kelompok berisi 8. Kelompok ini disebut byte. "

"Tepat sekali. Sebuah byte adalah sekelompok delapan bit. Ini dapat menyimpan nilai-nilai berikut: 00000000, 00000001, ... 11111111. Nilai-nilai ini sesuai dengan angka desimal 0,1, ... 255. Yang memberi kita total 256 nilai."

Apa bilangan bulat terbesar di Jawa? Atau lebih tepatnya apa jenisnya?

"Panjang. Panjang terdiri dari 8 byte. Dengan kata lain, 64 bit. Dapat menyimpan nilai dari -2 63 hingga 2 63 -1.

"Ya. Saya tidak akan menyentuh bagaimana mengubah angka dari desimal ke biner atau sebaliknya. Kalau tidak, pelajarannya akan terlalu lama."

"Sebaliknya, mari kita bicara lebih banyak tentang sistem heksadesimal."

"Ya, ini sangat menarik. Untuk sistem biner dan oktal, kami hanya membuang digit, masing-masing dimulai dengan dua dan delapan. Tapi apa yang kita lakukan di sini? Menambahkan digit baru?"

"Tepat! Lihat ini:"

1) 16 digit digunakan untuk menulis angka: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

2) Angka 543 16 berarti 5*16 2 + 4*16 1 + 3*16 0 . Dengan kata lain, 5*256+4*16+3*1 = 1280+64+3 = 1347 10

"Jadi, kita baru saja menambahkan huruf sebagai angka? O_o"

"Ya. Dan apa masalahnya? Mengapa menciptakan angka baru ketika huruf berfungsi dengan baik? Coba lihat:"

Digit heksadesimal Nilai desimal
0 0
1 1
8 8
9 9
A 10
B 11
C 12
D 13
e 14
F 15

"Saya juga tidak akan berbicara tentang konversi dari desimal ke heksadesimal. Tapi inilah satu fakta menarik. Digit heksadesimal diwakili oleh tepat 4 bit, dengan nilai dari 0 sampai 15. Jadi, satu byte dapat ditulis dengan delapan digit biner (0 atau 1) atau dua digit heksadesimal."

"Ini contohnya:"

Angka desimal Bilangan biner Bilangan heksadesimal
0 0000 0000 00
1 0000 0001 01
15 0000 1111 0f
16 0001 0000 10
31 0001 1111 1f
32 0010 0000 20
128 1000 0000 80
129 1000 0001 81
255 1111 1111 ff

"Representasi heksadesimal mudah diubah menjadi biner (dan sebaliknya). Itu sebabnya representasi byte internal dari sebuah angka jarang diberikan dalam biner (menggunakan 0 dan 1) dalam pemrograman. Itu akan terlalu panjang dan sulit untuk dipahami. Notasi heksadesimal jauh lebih mudah dibaca dan ringkas."

"Aku setuju. Bahkan aku menyukainya."

"Ngomong-ngomong, Java memungkinkan Anda menulis angka dalam berbagai sistem penomoran langsung di dalam kode:"

Basis Fitur yang membedakan Contoh Nomor tidak valid
2 0b  di awal nomor 0b 00001111 0b 11111 2 1
8 0  di awal angka 0 1234343 0 12 8
10 Tidak ada 95459 909 sebuah
16 0x  di awal angka 0x 10ff 0x 1c gh

"Pelajaran yang bagus. Terima kasih, Bilaabo."