Notation para sa mga binary na numero tulad ng 1000100B - 1

"Hi, Amigo!"

"Hi, Bilaabo!"

"Gusto kong sabihin sa iyo ng kaunti tungkol sa iba't ibang mga sistema ng pagnunumero."

"Narinig mo na na ginagamit ng mga tao ang decimal system. Narito ang mga pangunahing katotohanan ng sistemang ito:

1)  10 digit ang ginagamit sa pagsulat ng mga numero: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

2)  Ang bilang na 543 ay nangangahulugang 5 daan + 4 sampu + 3 isa.

"Ito ay katumbas ng pagsulat ng 5*100 + 4*10 + 3*1, na maaaring isulat bilang 5*10 2 + 4*10 1 + 3*10 0 .

Tandaan na ang libu-libo, daan-daan, sampu at isa ay mga kapangyarihan ng bilang 10.

1) Ang isa ay 10 hanggang sa zeroth na kapangyarihan.

2)  Ang sampu ay 10 sa unang kapangyarihan.

3) Ang isang daan ay 10 sa pangalawang kapangyarihan.

4)  Ang isang libo ay 10 sa ikatlong kapangyarihan, atbp.

"Opo. Naiintindihan ko."

"Ngunit ngayon isipin na mayroon lamang tayong 8 digit. Pagkatapos mayroon tayong octal system. Narito ang mga pangunahing katotohanan nito:"

1)  8 digit ang ginagamit sa pagsulat ng mga numero: 0, 1, 2, 3, 4, 5, 6, 7.

2)  Ang bilang na 543 8 ay nangangahulugang 5*8 2 +4*8 1 +3*8 0 . Sa madaling salita, ito ay 5*64 + 4*8 + 3*1 = 320+32+3 = 320+32+3=355 10

Sumulat ako ng 8 at 10 bilang mga subscript upang ipahiwatig kung gaano karaming mga numero ang ginagamit upang kumatawan sa numero.

"I think I get it. I think I could convert a number from the octal system to decimal. Pero malamang na hindi ako makapunta sa ibang paraan."

"Hindi naman ganoon kahirap. Imagine you need to use several trucks to move a pile of sand. You have dump trucks, ordinary trucks, and very small trucks. Pero hindi makakapunta ang mga truck kung hindi puno."

"Paano mo gagawin?"

"First, I would fill up dump trucks, since they're the biggest. Tapos, kapag nakita ko na walang sapat na buhangin para punan ang truck, I would switch to the smaller vehicles. And then the even smaller ones."

"Ito ay talagang magkatulad dito. Subukan nating i-convert ang numerong 355 10 pabalik sa octal."

"Una, hinahati natin ito sa 64 (8 2 ) at makakakuha tayo ng 5 na may natitirang 35. Nangangahulugan ito na ang unang digit ng ating numero ay 5. Pagkatapos ay hinahati natin ang natitira sa 8 (8 1 ) at makakuha ng 4 na may natitira. ng 3. Kaya, nakukuha natin ang numerong 543 8 ."

"Nga pala, pwede ka rin lumipat sa kabilang direksyon. Tutal, 543 8 == 5*64+4*8+3 == ((5)*8+4)*8+3. Our octal "tens Ang " at "daan-daan" ay dapat na hatiin ng 8. Kaya, ang natitirang bahagi ng dibisyon sa pamamagitan ng 8 ay ang ating mga octal na digit."

"Una, hatiin natin ang 355 sa 8. Makakakuha tayo ng 44 na may natitirang 3. Ibig sabihin, 355=44*8+3. At ang 44 ay maaaring katawanin bilang 5*8+4. Kaya, 355= (5*8+ 4)*8+3; Narito ang aming mga digit: 5, 4, 3. Ang numerong hinahanap namin ay 543 8 ."

"Sa tingin ko nakuha ko ito, ngunit kailangan kong magsanay ng kaunti upang maunawaan ang lahat ng bagay sa lahat ng paraan."

"Madalas na kinabibilangan ng programming ang paggamit ng mga numero na may iba't ibang base (ibig sabihin, ang bilang ng mga digit na ginamit sa sistema ng pagnunumero). Ang pinakasikat ay 2, 8, 10, 16, at 64."

"Ngunit bakit kailangan ito? Bakit kailangan natin ng mga numerong kinakatawan ng 2, 8, 16, o 64 na digit?"

"Ito ay tungkol sa kung paano gumagana ang processor sa loob. Napakasimple, kung ang kasalukuyang ay dumadaloy sa isang wire, pagkatapos ay sinasabi namin na ang halaga nito ay 1; kung walang kasalukuyang, ang halaga nito ay 0. Ang lahat ng mga numero ay naka-imbak sa mga cell ng memorya. Ang mga ito Ang mga cell ay may napaka-basic na disenyo. At maaari lamang silang mag-imbak ng 0 o 1."

"Ngunit ang gayong pagpapasimple (0 o 1 lamang) ay naging posible upang gawing napakaliit ang mga elemento sa loob ng processor at memorya. Kasama sa mga modernong processor at memory module ang bilyun-bilyong iba't ibang elemento. At ang kanilang lugar ay kadalasang hindi hihigit sa isang square centimeter."

"Whoa. Ngayon alam ko na."

"Ngayon ay bumaling tayo sa mga binary na numero. Dito mayroon tayong parehong bagay tulad ng sa octal, mas madali lamang."

1)  2 digit ang ginagamit sa pagsulat ng mga numero: 0, 1.

2)  Ang bilang na 101 2 ay nangangahulugang 1*2 2 + 0*2 1 + 1*2 0 . Sa madaling salita, ito ay 1*4+0*2+1*1 =4+1=51 10

"Oo. Naaalala ko. Ang isang cell, na maaaring magkaroon ng halaga ng alinman sa 0 o 1, ay tinatawag na kaunti. Ngunit hindi ito makapag-imbak ng napakaraming impormasyon, kaya't sila ay pinagsama sa mga grupo ng 8. Ang mga pangkat na ito ay tinatawag na bytes. "

"Eksakto. Ang isang byte ay isang pangkat ng walong bits. Maaari itong mag-imbak ng mga sumusunod na halaga: 00000000, 00000001, ... 11111111. Ang mga halagang ito ay tumutugma sa mga decimal na numero 0,1, ... 255. Na nagbibigay sa amin ng kabuuang bilang ng 256 na halaga."

Ano ang pinakamalaking integer sa Java? O sa halip ano ang uri nito?

"Isang mahaba. Ang isang mahaba ay binubuo ng 8 byte. Sa madaling salita, 64 bits. Maaari itong mag-imbak ng mga halaga mula -2 63 hanggang 2 63 -1.

"Yep. I won't touch on how to convert numbers from decimal to binary or vice versa. Otherwise, masyadong mahaba ang lesson."

"Sa halip, pag-usapan pa natin ang hexadecimal system."

"Oo, ito ay napaka-interesante. Para sa mga sistema ng binary at octal, tinanggal lang namin ang mga digit, simula sa dalawa at walo, ayon sa pagkakabanggit. Ngunit ano ang gagawin namin dito? Magdagdag ng mga bagong digit?"

"Eksakto! Tingnan mo ito:"

1) 16 na numero ang ginagamit sa pagsulat ng mga numero: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

2) Ang bilang na 543 16 ay nangangahulugang 5*16 2 + 4*16 1 + 3*16 0 . Sa madaling salita, ito ay 5*256+4*16+3*1 = 1280+64+3 = 1347 10

"So, nagdagdag na lang tayo ng mga letra bilang digit? O_o"

"Oo. At ano ang malaking bagay? Bakit mag-imbento ng mga bagong numero kapag ang mga titik ay gumagana nang maayos? Tingnan ito:"

Hexadecimal na digit halaga ng desimal
0 0
1 1
8 8
9 9
A 10
B 11
C 12
D 13
E 14
F 15

"Hindi rin ako magsasalita tungkol sa pag-convert mula sa decimal patungo sa hexadecimal. Ngunit narito ang isang kawili-wiling katotohanan. Ang isang hexadecimal na digit ay kinakatawan ng eksaktong 4 bits, na may mga halaga mula 0 hanggang 15. Kaya, ang isang byte ay maaaring isulat na may walong binary digit (0 o 1) o dalawang hexadecimal digit."

"Narito ang isang halimbawa:"

Desimal na numero Binary na numero Hexadecimal na numero
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

"Ang hexadecimal na representasyon ay madaling ma-convert sa binary (at vice versa). Kaya't ang panloob na byte na representasyon ng isang numero ay bihirang ibigay sa binary (gamit ang 0s at 1s) sa programming. Iyon ay masyadong mahaba at mahirap maunawaan. Hexadecimal notation ay mas nababasa at mas compact."

"I agree. Kahit ako nagustuhan."

"Siya nga pala, hinahayaan ka ng Java na magsulat ng mga numero sa iba't ibang sistema ng pagnunumero nang direkta sa code:"

Base Tampok na nakikilala Mga halimbawa Mga di-wastong numero
2 0b  sa simula ng numero 0b 00001111 0b 11111 2 1
8 0  sa simula ng numero 0 1234343 0 12 8
10 wala 95459 909 a
16 0x  sa simula ng numero 0x 10ff 0x 1c gh

"Mahusay na aral. Salamat, Bilaabo."