1. Encoding oktal

Ngomong babagan pengkodean ... Kaya sing sampeyan ngerteni, ing saben dinten kita nggunakake notasi desimal : kabeh nomer kita diwakili nggunakake 10 simbol: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Ana 10. angka, mula sistem kasebut diarani desimal.

Nanging programer minangka penemu wektu gedhe. Padha langsung teka munggah karo enkoding sing nggunakake nomer beda saka simbol. Contone, 16, 8 lan 2.

Encoding alternatif sing nggunakake 8 simbol paling gampang: mung nyelehake 8 lan 9 lan sampeyan entuk enkoding oktal ( sistem angka oktal ).

Lan, ya, sampeyan bisa nggunakake sistem oktal kanggo nemtokake literal numerik. Yen, mesthi, sampeyan pancene kudu. Iku luwih gampang saka muni. Sampeyan mung kudu nulis nomer 0 sadurunge nomer.

Ing tembung liyane, Jawa nganggep sembarang integer literal diwiwiti karo 0 minangka nilai octal.

Tuladha:

Kode Cathetan
int x = 015; 
x punika 13: 1*8+5
int x = 025; 
x punika 21: 2*8+5
int x = 0123; 
x iku 83: 1*64+2*8+3 == 1*8 2 +2*8 1 +3*8 0
int x = 078;
Iki ora bakal ngumpulake: 8 ora salah siji saka simbol digunakake ing enkoding octal.

Ora mungkin sampeyan kudu nulis nomer oktal ing kode sampeyan, nanging sampeyan kudu ngerti apa iku. Sawise kabeh, sampeyan kudu maca kode sing ditulis dening wong liya. Lan kaya kasebut ing ndhuwur, programer minangka penemu gedhe.

Elinga yen sampeyan ora bisa nulis 0 ing ngarep saben nomer.



2. Encoding biner

Encoding binar malah luwih menarik. Yen octal mung duwe digit 0-7, banjur binar mung duwe 0 lan 1. Kenapa enkoding iki perlu?

Iki ana hubungane karo struktur internal komputer. Kabeh ing komputer nganggo listrik, lan kaya sing kedadeyan, cara sing paling efisien kanggo nyimpen lan ngirim barang nggunakake listrik yaiku nggunakake rong negara: ora ana listrik ing kabel (nol) lan ana listrik (siji).

Iki minangka asal saka popularitas sistem angka biner.

Ing asas, iku ora asring banget digunakake ing Jawa: Jawa dianggep minangka basa tingkat dhuwur, rampung abstrak saka hardware sing mlaku ing. Pancen, sampeyan pancen peduli format apa sing digunakake kanggo nyimpen lan ngolah data ing komputer?

Nanging sajrone dekade kepungkur, programer wis seneng karo enkoding biner (lan enkoding liyane adhedhasar iku). Akibaté, Jawa duwe operator sing njupuk angka biner minangka input. Lan akurasi angka floating-point gumantung saka perwakilan binar.

Sejatine, luwih becik sampeyan ngerti babagan enkoding iki tinimbang ora ngerti.

Lan kaya kasus enkoding oktal, Jawa nduweni cara kanggo ngode literal nggunakake sistem biner. Tegese, aksara mung dumadi saka 0s lan 1s. Supaya compiler Jawa ngerti yen kode kasebut ngemot literal numerik sing dienkode ing biner tinimbang mung angka desimal sing dumadi saka nol lan siji, kabeh literal biner diidentifikasi nggunakake awalan 0b ('b' asale saka tembung biner). .

Tuladha:

Kode Cathetan
int x = 0b100; 
х iku 4: 1*4+0*2+0
int x = 0b1111; 
х iku 15: 1*8+1*4+1*2+1
int x = 0b1111000111; 
х punika 967: 1*2 9 +1*2 8 +1*2 7 +1*2 6 +0*2 5 +0*2 4 +0*2 3 +1 *2 2 + 1*2+1;
int x = 0b12000;
Iki ora bakal kompilasi: 2 dudu salah sawijining simbol sing digunakake ing enkoding binar.


3. Encoding heksadesimal

Saliyane enkoding oktal lan biner, literal uga bisa ditulis kanthi heksadesimal. Iki minangka enkoding sing populer banget.

Iki amarga sanajan notasi binar sabisa-bisa kanggo nyimpen nomer, angel banget kanggo manungsa kanggo nggarap angka kasebut kanthi efektif: ing biner, nomer siji yuta ngemot 20 digit, dudu 7.

Mulane programer teka karo sistem heksadesimal. Sawise kabeh, 16 minangka 2 diunggahake menyang daya kaping 4 , saengga 4 bit cocog karo siji digit heksadesimal. Secara kasar, saben 4 bit saiki bisa ditulis minangka digit heksadesimal siji.

Enkoding heksadesimal uga nduweni prefiks unik dhewe: 0x . Tuladha:

Nomer desimal Notasi binar Notasi heksadesimal
17 0b 0001 0001 0x11 _ _
4 1 0b 0010 1 00 1 0x2 9 _
85 0b 0101 0101 0x5 5 _
256 0b 1 0000 0000 0x100 _ _ _

Ok, sampeyan ngomong, iku cukup cetha carane kita tak sistem octal: kita mung mbuwang metu nomer 8 lan 9, nanging ngendi kita njaluk 6 simbol ekstra kanggo sistem hexadecimal? Aku kepengin weruh wong-wong mau!

Kabeh iku langsung. 6 aksara pisanan saka alfabet Inggris dijupuk minangka 6 simbol ilang: A (10), B (11), C (12), D (13), E (14), F (15).

Tuladha:

Notasi heksadesimal Notasi binar Nomer desimal
0x1 _ 0b 0000 0001 1
0x9 _ 0b 0000 1001 9
0x A 0b 0000 1010 10
0x b 0b 0000 1011 11
0x c 0b 0000 1100 12
0x D 0b 0000 1101 13
0x e 0b 0000 1110 14
0x f 0b 0000 1111 15
0x1 f _ 0b 0001 1111 31
0x A F 0b 1010 1111 175
0x F _ 0b 1111 1111 255
0x F F F 0b 1111 1111 1111 4095


4. Carane ngowahi angka saka heksadesimal

Ngonversi nomer saka heksadesimal dadi desimal gampang banget. Contone, sampeyan duwe nomer 0 x A F C F. Pira iku ing desimal?

Kaping pisanan, kita duwe sistem nomer posisional, sing tegese kontribusi saben digit menyang nomer sakabèhé mundhak kanthi faktor 16 nalika kita pindhah saka tengen ngiwa:

A * 16 3 + F * 16 2 + C * 16 1 + F

Simbol A cocog karo angka 10, huruf C cocog karo angka 12, lan huruf F nuduhake limalas. Kita entuk:

10 * 16 3 + 15 * 16 2 + 12 * 16 1 + 15

Ngunggahake 16 menyang macem-macem kekuwatan sing cocog karo digit, kita entuk:

10 * 4096 + 15 * 256 + 12 * 16 + 15

Kita nyimpulake kabeh lan entuk:

45007

Sampeyan ngerti carane nomer iki disimpen ing memori:

0x A F C F

Nanging saiki ayo diowahi dadi binar. Ing binar bakal dadi:

0b 1010 1111 1100 1111

Saben set patang bit cocog karo persis siji karakter heksadesimal. Sing super trep. Tanpa perkalian utawa eksponensial."