Notasi untuk nombor binari seperti 1000100B - 1

"Hai, Amigo!"

"Hai, Bilaabo!"

"Saya ingin memberitahu anda sedikit tentang sistem penomboran yang berbeza."

"Anda telah pun mendengar bahawa orang menggunakan sistem perpuluhan. Berikut ialah fakta utama sistem ini:

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

2)  Nombor 543 bermaksud 5 ratus + 4 puluh + 3 satu.

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

Perhatikan bahawa ribuan, ratusan, puluhan dan satu adalah kuasa nombor 10.

1) Satu ialah 10 kepada kuasa sifar.

2)  Sepuluh ialah 10 kepada kuasa pertama.

3) Seratus ialah 10 kepada kuasa kedua.

4)  Seribu adalah 10 dalam kuasa ketiga, dsb.

"Yep. Faham."

"Tetapi sekarang bayangkan bahawa kita hanya mempunyai 8 digit. Kemudian kita mempunyai sistem oktal. Berikut adalah fakta utamanya:"

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

2)  Nombor 543 8 bermaksud 5*8 2 +4*8 1 +3*8 0 . Dalam erti kata lain, ia ialah 5*64 + 4*8 + 3*1 = 320+32+3 = 320+32+3=355 10

Saya menulis 8 dan 10 sebagai subskrip untuk menunjukkan bilangan digit yang digunakan untuk mewakili nombor tersebut.

"Saya rasa saya faham. Saya rasa saya boleh menukar nombor daripada sistem perlapanan kepada perpuluhan. Tetapi saya mungkin tidak boleh pergi sebaliknya."

"Ia tidak begitu sukar. Bayangkan anda perlu menggunakan beberapa trak untuk mengalihkan timbunan pasir. Anda mempunyai trak pembuangan sampah, trak biasa dan trak yang sangat kecil. Tetapi trak itu tidak boleh pergi jika ia tidak penuh."

"Bagaimana anda akan melakukannya?"

"Mula-mula, saya akan mengisi trak sampah, kerana ia adalah yang terbesar. Kemudian, apabila saya melihat bahawa tidak ada pasir yang mencukupi untuk mengisi trak, saya akan beralih kepada kenderaan yang lebih kecil. Dan kemudian yang lebih kecil."

"Ia sebenarnya sangat serupa di sini. Mari cuba tukar nombor 355 10 kembali kepada perlapanan."

"Pertama, kita bahagikannya dengan 64 (8 2 ) dan dapatkan 5 dengan baki 35. Ini bermakna digit pertama nombor kita ialah 5. Kemudian kita bahagikan baki dengan 8 (8 1 ) dan dapatkan 4 dengan baki daripada 3. Oleh itu, kita mendapat nombor 543 8 ."

"Dengan cara ini, anda juga boleh bergerak ke arah lain. Lagipun, 543 8 == 5*64+4*8+3 == ((5)*8+4)*8+3. Perlapanan "puluhan kami " dan "ratus" mesti dibahagikan dengan 8. Oleh itu, baki pembahagian dengan 8 akan menjadi digit perlapanan kita."

"Pertama, mari kita bahagikan 355 dengan 8. Kita dapat 44 dengan baki 3. Iaitu, 355=44*8+3. Dan 44 boleh diwakili sebagai 5*8+4. Oleh itu, 355= (5*8+ 4)*8+3; Berikut ialah digit kami: 5, 4, 3. Nombor yang kami cari ialah 543 8 ."

"Saya rasa saya faham, tetapi saya perlu berlatih sedikit untuk memahami segala-galanya sepanjang jalan."

"Pengaturcaraan selalunya melibatkan penggunaan nombor dengan asas yang berbeza (iaitu bilangan digit yang digunakan dalam sistem penomboran). Yang paling popular ialah 2, 8, 10, 16, dan 64."

"Tetapi mengapa ini perlu? Mengapa kita memerlukan nombor yang diwakili oleh 2, 8, 16, atau 64 digit?"

"Ini mengenai cara pemproses berfungsi secara dalaman. Secara ringkasnya, jika arus mengalir melalui wayar, maka kita katakan bahawa nilainya ialah 1; jika tiada arus, maka nilainya ialah 0. Semua nombor disimpan dalam sel memori. Ini sel mempunyai reka bentuk yang sangat asas. Dan mereka hanya boleh menyimpan 0 atau 1."

"Tetapi penyederhanaan sedemikian (hanya 0 atau 1) memungkinkan untuk menjadikan elemen di dalam pemproses dan memori menjadi sangat kecil. Pemproses moden dan modul memori termasuk berbilion elemen berbeza. Dan kawasannya selalunya tidak lebih daripada satu sentimeter persegi."

"Wah. Sekarang saya tahu."

"Sekarang kita beralih kepada nombor binari. Di sini kita mempunyai perkara yang sama seperti perlapanan, hanya lebih mudah."

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

2)  Nombor 101 2 bermaksud 1*2 2 + 0*2 1 + 1*2 0 . Dalam erti kata lain, ia ialah 1*4+0*2+1*1 =4+1=51 10

"Ya. Saya masih ingat. Satu sel, yang boleh mempunyai nilai sama ada 0 atau 1, dipanggil sedikit. Tetapi ia tidak boleh menyimpan banyak maklumat, jadi ia digabungkan menjadi kumpulan 8. Kumpulan ini dipanggil bait. "

"Tepat sekali. Bait ialah kumpulan lapan bit. Ia boleh menyimpan nilai berikut: 00000000, 00000001, ... 11111111. Nilai ini sepadan dengan nombor perpuluhan 0,1, ... 255. Yang memberikan kita sejumlah 256 nilai."

Apakah integer terbesar di Jawa? Atau lebih tepatnya apakah jenisnya?

"A long. A long terdiri daripada 8 bait. Dalam erti kata lain, 64 bit. Ia boleh menyimpan nilai dari -2 63 hingga 2 63 -1.

"Ya. Saya tidak akan menyentuh tentang cara menukar nombor daripada perpuluhan kepada binari atau sebaliknya. Jika tidak, pelajaran akan menjadi terlalu panjang."

"Sebaliknya, mari kita bercakap lebih sedikit tentang sistem perenambelasan."

"Ya, ia sangat menarik. Untuk sistem perduaan dan perlapanan, kita hanya menyingkirkan digit, masing-masing bermula dengan dua dan lapan. Tetapi apa yang kita lakukan di sini? Tambah digit baharu?"

"Tepat sekali! Lihat ini:"

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

2) Nombor 543 16 bermaksud 5*16 2 + 4*16 1 + 3*16 0 . Dalam erti kata lain, ia ialah 5*256+4*16+3*1 = 1280+64+3 = 1347 10

"Jadi, kita cuma tambah huruf sebagai digit? O_o"

"Ya. Dan apa masalahnya? Mengapa mencipta nombor baharu apabila huruf berfungsi dengan baik? Lihatlah:"

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

"Saya juga tidak akan bercakap tentang menukar daripada perpuluhan kepada perenambelasan. Tetapi inilah satu fakta menarik. Digit perenambelasan diwakili dengan tepat 4 bit, dengan nilai dari 0 hingga 15. Jadi, satu bait boleh ditulis dengan lapan digit binari (0 atau 1) atau dua digit heksadesimal."

"Ini contohnya:"

Nombor perpuluhan Nombor binari Nombor 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

"Perwakilan heksadesimal mudah ditukar kepada perduaan (dan sebaliknya). Itulah sebabnya perwakilan bait dalaman bagi nombor jarang diberikan dalam perduaan (menggunakan 0s dan 1s) dalam pengaturcaraan. Itu akan menjadi terlalu panjang dan sukar untuk difahami. Notasi heksadesimal lebih mudah dibaca dan padat."

"Saya setuju. Malah saya sukakannya."

"Dengan cara ini, Java membolehkan anda menulis nombor dalam pelbagai sistem penomboran terus dalam kod:"

Pangkalan Ciri membezakan Contoh Nombor tidak sah
2 0b  pada permulaan nombor 0b 00001111 0b 11111 2 1
8 0  pada permulaan nombor 0 1234343 0 12 8
10 tiada 95459 909 a
16 0x  pada permulaan nombor 0x 10ff 0x 1c gh

"Pengajaran yang sangat baik. Terima kasih, Bilaabo."