Illustrated na tutorial sa digital graphics. Hexadecimal na sistema ng numero

Ang sistema ng numero na pamilyar sa mga tao ay decimal. Ito ay batay sa sampung digit mula 0 hanggang 9. Ang hexadecimal system ay nakikilala sa pamamagitan ng pagkakaroon nito ng unang anim na titik ng alpabetong Latin para sa pagsulat ng mga numero bilang karagdagan sa mga pangunahing numero. Iyon ay, ang numero 9 ay sinusundan ng simbolo na "A", na tumutugma sa numero 10 para sa decimal system. Alinsunod dito, ang F sa hexadecimal ay 16 sa decimal. Ang paggamit ng labing-anim na character sa system ay hindi isang random na pagpipilian.

Ang yunit ng impormasyon ay medyo. Ang walong bit ay bumubuo ng isang byte. Mayroong isang konsepto tulad ng isang machine word - isang yunit ng data na kumakatawan sa dalawa, iyon ay, labing-anim na bits. Kaya, gamit ang labing-anim na magkakaibang mga simbolo, posibleng ilarawan ang anumang impormasyon na magiging pinakamaliit na particle sa panahon ng pagpapalitan ng data. Maaari kang magsagawa ng anumang mga operasyon sa aritmetika sa kanila, at ang resulta, nang naaayon, ay makukuha rin sa hexadecimal system.

Upang makilala na ang isang numero ay nakasulat sa hexadecimal, ang titik na "h" o ang subscript "16" ay isinusulat pagkatapos nito.

Aplikasyon

Ang pinakalaganap na paggamit ng hexadecimal number system ay nasa mga error code ng mga produkto ng software, halimbawa, isang operating system. Ang mga numerong nakapaloob sa mga code na ito ay na-standardize. Ang pagkakaroon ng isang espesyal na talahanayan, maaari mong palaging matukoy kung ano ang eksaktong ibig sabihin nito o ang error na iyon.

Sa mababang antas ng mga wika, na mas malapit hangga't maaari sa machine code, ang hexadecimal system ay ginagamit upang magsulat ng mga programa. Ginagamit din ito ng maraming programmer kapag nagtatrabaho sa mga wikang may mataas na antas, dahil ang mga numero sa sistemang ito, gamit ang isang espesyal na talahanayan ng pagsusulatan, ay madaling ma-convert sa binary system kung saan nakabatay ang operasyon ng lahat ng digital na teknolohiya. Anumang impormasyon sa isang computer, ito man ay isang music file o isang text document, pagkatapos ng pagsasalin ay kinakatawan ng isang sequence ng source binary code, at ito ay mas maginhawa upang tingnan ito na kinakatawan ng hexadecimal na mga simbolo.

Gayundin, ang isa sa mga paggamit ng mga simbolo ng hexadecimal ay ang paglalarawan ng mga scheme ng kulay, iyon ay, ang tatlong sangkap na R, G, B ay inilalarawan sa paraang angkop sa isang ibinigay na sistema. Ang diskarte sa pag-record na ito ay tinatawag na hexadecimal color

Ang kakayahang tingnan ang isang programa sa hexadecimal code ay nagbibigay-daan sa iyong i-debug ito, gumawa ng mga pagbabago, at ginagamit ng mga umaatake ang diskarteng ito upang mag-hack ng mga programa.

Hexadecimal notation ("Hex")- isang maginhawang paraan upang kumatawan sa mga binary na halaga. Kung paanong ang sistema ng decimal na numero ay may base na sampu at ang binary number system ay may base na dalawa, ang hexadecimal number system ay may base na labing-anim.

Ang base 16 na sistema ng numero ay gumagamit ng mga numero 0 hanggang 9 at ang mga titik A hanggang F. Ipinapakita ng figure ang katumbas na decimal, binary, at hexadecimal na mga halaga para sa mga binary na numero 0000 hanggang 1111. Mas madali naming ipahayag ang isang halaga bilang isa hexadecimal digit kaysa bilang apat na bits

Pag-unawa sa Bytes

Dahil sa 8 bits (bytes) ang karaniwang binary grouping, ang mga binary na numero 00000000 hanggang 11111111 ay maaaring katawanin sa hexadecimal notation bilang mga numerong 00 hanggang FF. Ang mga nangungunang zero ay palaging ipinapakita upang makumpleto ang 8-bit na representasyon. Halimbawa, ang binary value na 0000 1010 sa hexadecimal ay magiging 0A.

Representasyon ng Hexadecimal Values

Mangyaring tandaan: Mahalagang makilala ang mga halaga ng hexadecimal mula sa mga halaga ng decimal para sa mga character 0 hanggang 9, tulad ng ipinapakita sa figure.

Ang mga hexadecimal na halaga ay kadalasang kinakatawan sa text ng isang value na nauuna ng 0x (gaya ng 0x73), o sa pamamagitan ng paggamit ng subscript na 16. Hindi gaanong karaniwan, maaaring sundan sila ng letrang H, gaya ng 73H. Gayunpaman, dahil ang subscript text ay hindi kinikilala sa command line o sa programming environment, ang mga ito ay nauunahan ng "0x" (zero X) sa teknikal na representasyon ng mga hexadecimal na numero. Samakatuwid, ang mga halimbawa sa itaas ay ipapakita bilang 0x0A at 0x73 ayon sa pagkakabanggit.

Ginagamit ang hexadecimal notation upang kumatawan sa mga Ethernet MAC address at IP Bersyon 6 na address.

Hexadecimal Conversion

Ang pag-convert ng mga numero sa pagitan ng decimal at hexadecimal na mga halaga ay simple, ngunit ang mabilis na paghahati o pagpaparami ng 16 ay hindi palaging maginhawa. Kung ang mga naturang conversion ay kinakailangan, kadalasan ay mas madaling i-convert ang isang decimal o hexadecimal na halaga sa binary, at pagkatapos ay i-convert ang binary na halaga sa decimal o hexadecimal, depende sa kung ano ang gusto mong makuha.

Sa pagsasanay, posibleng makilala ang mga binary bit pattern na tumutugma sa mga halaga ng decimal at hexadecimal. Ipinapakita ng figure ang mga pattern na ito para sa ilang 8-bit na halaga.

Hexadecimal na sistema ng numero. ang aming unang programa.

Upang magsulat ng mga programa sa Assembly, kailangan mong maunawaan ang hexadecimal number system. Walang kumplikado tungkol dito. Ginagamit natin ang decimal system sa buhay. Sigurado akong alam mo lahat, kaya susubukan kong ipaliwanag ang hexadecimal system gamit ang isang pagkakatulad sa decimal system.

Kaya, sa sistema ng decimal, kung magdaragdag tayo ng zero sa anumang numero sa kanan, ang bilang na ito ay tataas ng 10 beses. Halimbawa: 1 x 10 = 10; 10 x 10 = 100; 100 x 10 = 1000, atbp. Sa sistemang ito ginagamit namin ang mga numero mula 0 hanggang 9, i.e. sampung iba't ibang mga numero (sa katunayan, kaya tinatawag itong decimal).

Sa hexadecimal system, ginagamit namin ang labing-anim na "digit". Partikular kong isinulat ang salitang "digit" sa mga panipi, dahil... Hindi lang numero ang ginagamit nito. At talagang, paano iyon? Hayaan akong ipaliwanag: mula 0 hanggang 9 ay binibilang namin sa parehong paraan tulad ng sa decimal, ngunit pagkatapos ay magiging ganito: A, B, C, D, E, F. Ang numero F ay hindi mahirap bilang, ito ay magiging katumbas ng 15 sa decimal system (tingnan ang Talahanayan 1).

Desimal na numero

Hexadecimal na numero

Talahanayan 1. Decimal at hexadecimal system.

Kaya, kung magdaragdag tayo ng zero sa kanan ng anumang numero sa hexadecimal system, ang bilang na ito ay tataas ng16 minsan.

Halimbawa 1: 1 x 16 = 10; 10 x 16 = 100; 100 x 16 = 1000, atbp.

Nagawa mo bang makilala ang mga hexadecimal na numero mula sa mga decimal na numero sa Halimbawa 1? At mula sa seryeng ito: 10, 12, 45, 64, 12, 8, 19? Ang mga ito ay maaaring alinman sa hexadecimal o decimal. Upang maiwasan ang pagkalito at ang computer upang malinaw na makilala ang isang numero mula sa isa pa, sa assembler ay kaugalian na ilagay ang simbolo na h o H pagkatapos ng isang hexadecimal na numero ( Ang H ay abbreviation para sa English. hexadecimal (hexadecimal). Para sa maikli, kung minsan ito ay tinatawag na simple Hex ) . At huwag maglagay ng anuman pagkatapos ng decimal. kasi Ang mga numero mula 0 hanggang 9 sa parehong mga sistema ay may parehong kahulugan, pagkatapos ay ang mga numerong nakasulat bilang 5 at 5h ay pareho.

yun. Halimbawa 1 (tingnan sa itaas) ay mas tama kung isulat ang ganito: 1 x 16 = 10h; 10h x 16 = 100h; 100h x 16 = 1000h. O tulad nito: 1h x 10h = 10h; 10h x 10h = 100h; 100h x 10h = 1000h.

Titingnan natin kung bakit kailangan ang hexadecimal system sa mga susunod na isyu. Sa ngayon, para sa aming halimbawang programa, na tatalakayin sa ibaba, kailangan nating malaman ang tungkol sa pagkakaroon ng mga numerong hexadecimal.

Kaya, sabihin summarize. Ang sistema ng hexadecimal na numero ay binubuo ng 10 digit (mula 0 hanggang 9) at 6 na titik ng alpabetong Latin (A, B, C, D, E, F). Kung magdaragdag tayo ng zero sa kanan ng anumang numero sa hexadecimal system, ang bilang na ito ay tataas ng16 minsan. Napakahalagang maunawaan ang paksang ito, dahil palagi naming gagamitin ito kapag nagsusulat ng mga programa.

Ngayon ng kaunti tungkol sa kung paano ako bubuo ng mga halimbawa sa Assembly. Ito ay hindi lubos na maginhawa upang ipakita ang mga ito sa HTML na format, kaya unang magkakaroon ng program code mismo na may mga numerong linya, at kaagad pagkatapos nito ay magkakaroon ng mga paliwanag at tala.

Isang bagay na tulad nito:

mga linya Code ng programa
(1) mov ah,9

Mga Paliwanag:

Sa linya (1) ginagawa namin ito, at sa linya (15) ginagawa namin iyon.

Malaking kahilingan: HUWAG kumopya ng mga programa mula sa isang pahina patungo sa clipboard at pagkatapos ay i-paste ang mga ito sa Notepad (o kahit saan pa)! I-type muli ang mga ito nang manu-mano sa isang text editor. Kung mayroon kang isang printer, pagkatapos ay piliin ang programa, i-print ang napiling fragment, at pagkatapos ay ilipat ito sa editor mula sa papel. Ang lahat ng mga halimbawa ay dapat i-type sa iyong sarili! Mapapabilis nito ang pagsasaulo ng mga operator.

At isa pa. Walang pagkakaiba sa pagitan ng lowercase at UPPERCASE na mga titik sa assembler. Mga tala ng form:

Ang assembler perceives ang mga ito sa parehong paraan. Maaari mong, siyempre, pilitin ang assembler na makilala sa pagitan ng lowercase at UPPERCASE na mga character, ngunit hindi namin ito gagawin sa ngayon. Upang gawing mas madaling basahin ang programa, pinakamahusay na mag-type ng mga operator sa maliliit na titik, at simulan ang mga pangalan ng mga subroutine at label sa malalaking titik. Ngunit ito ay depende sa kung sino ang magiging komportable.

Kaya, lumipat tayo sa aming unang programa:

(1) Segment ng CSEG

(2)org 100h

(4) Magsimula:

(6) mov ah,9

(7) mov dx,offset na Mensahe

(8)int 21h

(10) sa loob ng 20h

(11)

(12) Mensahe db "Hello, world!$"

(13)Nagtatapos ang CSEG

(14) wakas Magsimula

Upang maipaliwanag ang lahat ng mga operator sa halimbawang ito, kakailanganin namin ng ilang mga edisyon. Samakatuwid, aalisin na lang natin ang paglalarawan ng ilang mga utos sa yugtong ito. Ipagpalagay na lang na ganito dapat. Titingnan namin ang mga operator na ito nang detalyado sa malapit na hinaharap. Kaya, ang mga linyang may numerong (1), (2) at (13) ay binabalewala mo lang.

Ang mga linya (3), (5), (9) at (11) ay iniwang blangko. Ginagawa ito para sa kalinawan. Aalisin lamang sila ng assembler.

Ngayon, magpatuloy tayo upang isaalang-alang ang natitirang mga operator. Ang program code ay nagsisimula sa linya (4). Ito ay isang marka na nagsasabi sa assembler sa simula ng code. Ang linya (14) ay naglalaman ng mga operator na nagtatapos Magsimula ( Simulan ang Ingles simulan; wakas wakas). Ito ang pagtatapos ng programa. Sa pangkalahatan, sa halip na salita Magsimula ibang bagay sana ang ginamit. Halimbawa, Simula:. Sa kasong ito, kailangan nating tapusin ang programa Tapusin ang Simula (14).

Ang mga linya (6) (8) ay nagpapakita ng mensaheng Hello, world!. Dito kailangan nating pag-usapan nang maikli ang tungkol sa mga rehistro ng processor (titingnan natin ang paksang ito nang mas detalyado sa susunod na isyu).

Ang rehistro ng processor ay isang espesyal na inilaan na memorya para sa pag-iimbak ng isang numero.

Halimbawa:

Kung nais naming magdagdag ng dalawang numero, pagkatapos ay isulat namin ito sa matematika tulad nito:

A, B at C ito ay isang uri ng mga rehistro (kung pinag-uusapan natin ang tungkol sa isang computer) kung saan ang ilang data ay maaaring maimbak. Ang A=5 ay mababasa bilang: Italaga sa A ang bilang 5 .

Upang magtalaga ng isang rehistro ng isang halaga, mayroong isang mov operator sa Assembler (mula sa English move load). Ang linya (6) ay dapat basahin nang ganito: Naglo-load sa rehistro A.H.numero 9 (sa madaling salita, itinalaga namin A.H.numero 9). Sa ibaba ay titingnan natin kung bakit ito kinakailangan.

Sa linya (7) naglo-load kami sa rehistro DX address ng mensahe para sa output (sa halimbawang ito ito ang magiging stringKumusta, mundo!$).

Tatalakayin nang detalyado ang mga interrupt sa mga susunod na isyu. Dito ako magsasabi ng ilang salita.

Makagambala MS-DOS ito ay isang uri ng subroutine (bahagi MS-DOS), na permanenteng namamalagi sa memorya at maaaring tawagan anumang oras mula sa anumang programa.

Isaalang-alang natin ang nasa itaas gamit ang isang halimbawa (Mga tala sa maliit na pag-print):

Programa para sa pagdaragdag ng dalawang numero

Mga Programa sa Tahanan

A=5 Ipinasok namin ang halaga 5 sa variable A

B=8 sa variable B ang halaga 8

Pagdaragdag ng Mga Subroutine sa Pagtawag

ngayon ang C ay katumbas ng 13

A=10 parehong bagay, magkaibang numero lang

B=25

Pagdaragdag ng Mga Subroutine sa Pagtawag

ngayon ang C ay katumbas ng 35

Pagtatapos ng Programa

Subroutine na Pagdaragdag

C=A+B

ReturnFromSubroutine bumalik kami sa lugar kung saan kami tumawag

EndSubroutine

Sa halimbawang ito, dalawang beses naming tinawag ang subroutine Dagdag, na nagdagdag ng dalawang numero na ipinasa dito sa mga variable A at B . Ang resulta ay inilalagay sa variable na C. Kapag tinawag ang isang subroutine, naaalala ng computer kung saan ito tinawag, at pagkatapos, kapag natapos nang tumakbo ang subroutine, babalik ang computer sa lugar kung saan ito tinawag. yun. Maaari kang tumawag sa mga subroutine sa hindi tiyak na bilang ng beses mula sa kahit saan.

Kapag nagpapatupad ng linya (8) ng isang programa ng Assembly, tinatawagan namin ang isang subroutine (sa kasong ito ay tinatawag na interrupt), na nagpapakita ng linya sa screen. Para sa layuning ito, kami, sa katunayan, ay naglalagay ng mga kinakailangang halaga sa mga rehistro. Ang lahat ng kinakailangang gawain (pag-output ng isang linya, paglipat ng cursor) ay kinuha ng subroutine. Ang linyang ito ay mababasa nang ganito: tawagan ang dalawampu't isang interrupt ( int mula sa Ingles humarang makagambala). Mangyaring tandaan na pagkatapos ng numero 21 ay may isang sulat h . Ito, tulad ng alam na natin, ay isang hexadecimal na numero (33 sa decimal). Siyempre, walang pumipigil sa amin na palitan ang linya int 21h hanggang int 33. Ang programa ay gagana nang tama. Karaniwang kasanayan lamang sa Assembler na ipahiwatig ang interrupt na numero sa hexadecimal.

Sa linya (10) kami, tulad ng nahulaan mo, tumawag sa interrupt 20 h . Upang tawagan ang interrupt na ito, hindi mo kailangang tukuyin ang anumang mga halaga sa mga rehistro. Gumagawa lamang ito ng isang gawain: paglabas sa programa (paglabas sa DOS). Bilang resulta ng pagkaantala ng 20h, babalik ang programa kung saan ito inilunsad (na-load, tinawag). Halimbawa, sa Norton Commander o DOS Navigator.

Ang linya (12) ay naglalaman ng mensaheng ilalabas. Unang salita ( mensahe mensahe) pamagat ng mensahe. Maaari itong maging anuman (halimbawa, gulo o string, atbp.). TUNGKOL SA Bigyang-pansin ang linya (7), kung saan kami naglo-load sa rehistro DX ang aming address ng mensahe.

Maaari tayong lumikha ng isa pang linya, na tatawagin natin gulo2. Pagkatapos, simula sa linya (9), ipasok ang sumusunod na mga utos:

(10) mov dx,offset Mess2

(13) Mensahe db "Hello, world!$"

(14) Mess2 db "Ako ito! $"

at muling buuin ang aming programa. Sana ay mahulaan mo kung ano ang mangyayari

Bigyang-pansin ang huling karakter sa mga linya Mensahe at Mess2 - $. Tinuro nito ang dulo ng linya. Kung aalisin natin ito, pagkatapos ay 21 h ang interrupt ay magpapatuloy sa pag-output hanggang sa makatagpo ito ng isang character sa isang lugar sa memorya $. Sa screen natin makikita basura .

Kung mayroon kang debugger, makikita mo kung paano gagana ang aming programa.

Ang layunin ng isyung ito ay hindi upang maunawaan nang detalyado sa bawat operator. Ito ay imposible, dahil wala ka pang sapat na kaalaman. Naniniwala ako na pagkatapos ng 3-4 na paglabas ay mauunawaan mo ang prinsipyo at istruktura ng isang programa ng Assembly. Marahil ang wika ng Assembly ay tila napakakumplikado para sa iyo, ngunit maniwala ka sa akin, ito ay sa unang tingin.

Maraming mga gumagamit ng computer ang nauunawaan na ang isang computer ay gumagana sa isang binary number system. Ayon sa kaugalian, ang mga estado ng isang binary system ay kinakatawan ng mga numero 0 at 1, bagaman, mas tiyak, ang bawat estado ay nagpapahiwatig ng pagkakaroon o kawalan ng isang senyas, ibig sabihin, mas tama na tawagan ang mga estado na "off" at "on" , o “hindi” at “oo”. Ang "off" o "no" na estado ay tumutugma sa numero 0, at ang "on" o "oo" na estado ay tumutugma sa numero 1. Karaniwang hindi kailangang ganap na maunawaan ng mga ordinaryong gumagamit ang istraktura ng computer, gayunpaman, ang binary number system nagpapadama sa sarili sa anyo ng iba't ibang mga paghihigpit batay sa kapangyarihan ng dalawa. Ang isang mas compact na bersyon ng binary system ay tinatawag na hexadecimal. Ang numerong labing-anim ay ang ikaapat na kapangyarihan ng dalawa. Ito ay sumusunod mula dito na maaari mong medyo simpleng i-convert ang mahabang binary sequence ng mga zero at mga isa sa maiikling hexadecimal na mga. Upang gawin ito, hatiin lamang ang binary sequence sa mga pangkat ng apat na digit (digit) na nagsisimula sa hindi bababa sa makabuluhang digit (sa kanan) at palitan ang bawat pangkat ng katumbas na hexadecimal na halaga.

Ang hexadecimal system ay karaniwang ginagamit para sa kaginhawaan ng perceiving binary data, dahil ang mga conversion mula sa hexadecimal system sa binary system at pabalik ay isinasagawa sa pamamagitan lamang ng pagpapalit ng mga string. Eksklusibong gumagana ang computer sa mga binary sequence, at ang hexadecimal notation ng sequence na ito ay apat na beses na mas compact, dahil ang system na ito ay may base 16 (2 16), at binary 2. Ang binary sequence ay maaaring maging mahirap. Halimbawa, ang pagsusulat ng numerong 513 ay nangangailangan ng sampung binary digit (1000000001), ngunit tatlo lamang sa hexadecimal (201). Gayunpaman, upang kumatawan sa anumang hexadecimal na numero, labing-anim na magkakaibang simbolo ang kinakailangan, kaysa sa sampu na ginagamit sa sistema ng decimal na numero na pamilyar sa atin. Ang unang sampung character ay mga character sa hanay mula 0 hanggang 9, ang natitira ay mga titik ng Latin na alpabeto sa hanay mula A hanggang F. Ang mga titik ay karaniwang (ngunit hindi palaging) nakasulat sa malalaking titik (capital) sa hexadecimal notation ng numero. Ang unang sampung character (mula 0 hanggang 9) ay nakasulat nang katulad ng mga numero sa sistema ng decimal na numero at tumutugma sa kanila. Ang mga titik sa hanay A hanggang F ay tumutugma sa mga halaga sa hanay na 10 hanggang 15.

Isaalang-alang natin ang pagsusulatan ng mga numero mula 0 hanggang 15 sa hexadecimal at binary na mga sistema ng numero.

Decimal notation Hexadecimal notation Binary na notasyon
0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
10 A 1010
11 B 1011
12 C 1100
13 D 1101
14 E 1110
15 F 1111

Ang mga entry para sa 10, 11, atbp. sa decimal, binary, at hexadecimal system ay hindi tumutugma sa isa't isa. Tingnan natin ang isang maliit na halimbawa. Magkaroon tayo ng hexadecimal number na 1A5E. Para mag-convert sa binary, palitan lang ang hexadecimal digit ng mga kaukulang binary group. Ang resulta ay 0001 1010 0101 1110. Kung aalisin natin ang mga hindi gaanong halaga sa harap ng numero at isulat ito nang walang mga separator, makakakuha tayo ng 1101001011110. Para sa reverse translation, hahatiin natin ang numero sa mga pangkat ng apat na digit, simula sa pinakamababa (sa sa kanang bahagi), at para din sa kaginhawahan, nagdaragdag kami ng mga hindi gaanong halaga sa pinakamataas na pangkat sa 4 na ranggo. Nakukuha namin ang 0001 1010 0101 1110. Palitan ang mga pangkat ng kaukulang mga halaga ng hexadecimal, makakakuha kami ng 1A5E.

Upang i-convert ang isang hexadecimal na numero sa isang decimal na representasyon, maaari mong gamitin ang scheme kung saan sumusulat kami ng mga decimal na numero. Sa isang decimal na numero, ang bawat digit ay kumakatawan sa katumbas na kapangyarihan ng sampu, simula sa zero at tumataas mula kanan pakaliwa. Halimbawa, ang decimal na numero 123 ay nangangahulugang 1*10 2 + 2*10 1 + 3*10 0 . Gamit ang katulad na paraan, kino-convert namin ang numero 1A5E sa sistema ng decimal na numero. Sa sistema ng numerong hexadecimal, gayundin sa sistema ng decimal na numero, ang bawat digit ay nagsasaad ng kaukulang kapangyarihan ng numerong labing-anim, simula sa zero at tumataas mula kanan pakaliwa. Ang mga character na 1 at 5 sa hexadecimal ay tumutugma sa mga halaga 1 at 5 sa decimal, at ang mga character na A at E ay tumutugma sa 10 at 14. Pagkatapos ay ang 1A5E ay maaaring katawanin sa decimal bilang 1*16 3 + 10*16 2 + 5 *16 1 + 14*16 0 = 6750. Gayunpaman, upang masuri ang mga numerong hexadecimal ay hindi na kailangang i-convert ang mga ito sa decimal. Ang mga patakaran para sa paghahambing, pagdaragdag at pagpaparami sa sistemang ito ay kapareho ng sa sistema ng decimal, ang pangunahing bagay ay huwag kalimutan na ang bawat digit ay maaaring maglaman ng mga halaga mula 0 hanggang 15. Upang mabilis na ma-convert ang mga numero sa pagitan ng mga sistema ng numero, maaari mong gumamit ng isang karaniwang calculator sa Windows, para dito ito ay sapat na Sa advanced mode ng calculator, pumili ng isang sistema ng numero, magpasok ng isang numero sa loob nito at piliin ang nais na sistema ng numero kung saan ipapakita ang resulta.

Dahil ang mga numerong hexadecimal na numero lang ay madaling malito sa mga decimal na numero, kadalasang minarkahan ang mga ito sa paraang nagpapalinaw na ginagamit ang hexadecimal notation. Ang mga hexadecimal na entry ay karaniwang minarkahan sa pamamagitan ng pagdaragdag ng maliit na titik na "h" sa dulo o pagdaragdag ng prefix na "0x" bago ang numero. Kaya, ang hexadecimal number na 1A5E ay maaaring isulat bilang 1A5Eh o 0x1A5E, kung saan ang isang trailing na "h" o isang nangungunang "0x" ay nagpapahiwatig na ang hexadecimal notation ay ginagamit.

Hexadecimal na sistema ng numero, ay sa ngayon ang pinakasikat na paraan ng compactly recording ng mga binary na numero. Napakalawak na ginagamit sa pagbuo at disenyo ng digital na teknolohiya.

Gaya ng ipinahihiwatig ng pangalan, ang batayan ng sistemang ito ay ang numerong labing-anim 16 o sa hexadecimal 10 16. Upang maiwasan ang pagkalito, kapag nagsusulat ng mga numero sa mga sistema ng numero maliban sa decimal, ipahiwatig namin ang base ng sistema ng numero sa kanang ibaba ng pangunahing notasyon ng numero. Dahil ang base ng system ay ang numerong labing-anim, nangangahulugan ito na upang kumatawan sa mga numero ay kailangan natin ng labing-anim na digit. Ang unang sampung digit ay kinuha mula sa decimal system na pamilyar sa atin (0,1,..,8,9) at anim na letra ng Latin na alpabeto (a,b,c,d,e,f) ay idinagdag din. Halimbawa, sa hexadecimal number 3f7c2, ang mga letrang "f" at "c" ay mga hexadecimal digit.

Ang pagbibilang sa hexadecimal ay katulad ng pagbibilang sa decimal. Subukan nating magbilang at magsulat ng mga numero sa pamamagitan ng pagbuo ng mga ito mula sa magagamit na labing-anim na numero:

Zero - 0 ;
Isa - 1 ;
Dalawa - 2 ;
...
at iba pa…
...
Walo - 8 ;
Siyam - 9 ;
Sampu - a;
Labing-isa - b;
Labindalawa - c;
labintatlo - d;
Labing-apat - e;
labinlima - f;

Ano ang susunod na gagawin? Wala na lahat ng numero. Paano ilarawan ang numerong Labing-anim? Gawin natin ang katulad ng ginawa natin sa decimal system. Doon natin ipinakilala ang konsepto ng sampu, dito natin ipakikilala ang konsepto ng "labing-anim" at sasabihin na ang labing-anim ay isang "labing-anim" at zero ones. At maaari na itong isulat - "10 16".

Kaya, Labing-anim - 10 16 (isang "labing-anim", zero ones)
Labing pito - 11 16 (isang "labing-anim", isang yunit)
...
at iba pa…
...
Dalawampu't lima - 19 16 (isang "labing-anim", siyam na yunit)
Dalawampu't anim - 1a 16 (isang "labing-anim", sampung yunit)
Dalawampu't pito - 1b 16 (isang "labing-anim", labing-isang yunit)
...
at iba pa…
...
tatlumpu - 1e 16 (isang "labing-anim", labing-apat na isa)
Tatlumpu't isa - 1f 16 (isang "labing-anim", labinlimang isa)
Tatlumpu't dalawa - 20 16 (dalawang labing-anim, zero isa)
Tatlumpu't tatlo - 21 16 (dalawang labing-anim, isa isa)
...
at iba pa…
...
dalawang daan at limampu't lima - ff 16 (labinlima ng "labing-anim", labinlimang isa)

dalawang daan at limampu't anim - 100 16 (isang "dalawang daan limampu't anim", zero "labing-anim", zero ones)
dalawang daan at limampu't pito - 101 16 (isang "dalawang daan limampu't anim", zero hanggang "labing-anim", isa)
dalawang daan at limampu't walo - 102 16 (isang "Dalawang daan at limampu't anim", zero hanggang "labing-anim", dalawa)
...
at iba pa...
...

Sa tuwing naubos na namin ang hanay ng mga digit upang ipakita ang susunod na numero, ipinapasok namin ang mas malalaking yunit ng pagbibilang (i.e. pagbibilang ng "labing-anim", "dalawang daan at limampu't anim", atbp.) at isulat ang numero na pinalawig ng isang digit .

Isaalang-alang ang numero 3e2c 16 na nakasulat sa hexadecimal number system. Masasabi natin tungkol dito na naglalaman ito ng: tatlo x apat na libo siyamnapu't anim, "e" (labing apat) x dalawang daan at limampu't anim, dalawa x labing anim at "c" (labing dalawa). At maaari mong makuha ang halaga nito sa pamamagitan ng mga numerong kasama dito bilang mga sumusunod.

3e2c 16 = 3 *4096+14 *256+2 *16+12 *1, dito at sa ibaba ng * (asterisk) sign ay nangangahulugang multiplikasyon.

Ngunit ang serye ng mga numero 4096, 256, 16, 1 ay hindi hihigit sa mga integer na kapangyarihan ng numero labing-anim (ang base ng sistema ng numero) at samakatuwid ay maaaring isulat:

3e2c 16 = 3 *16 3 +14 *16 2 +2 *16 1 +12 *16 0

Katulad nito para sa isang hexadecimal fraction (fractional number) halimbawa: 0.5a2 16 tungkol dito ay masasabi nating naglalaman ito ng: limang labing-anim, “a” (sampu) dalawang daan at limampu’t anim at dalawang apat na libo at siyamnapu’t anim. At ang halaga nito ay maaaring kalkulahin bilang mga sumusunod:

0.5a2 16 = 5 *(1/16) + 10 *(1/256) + 2 *(1/4096)

At narito ang isang serye ng mga numero 1/16; Ang 1/256 at 1/4096 ay hindi hihigit sa mga integer na kapangyarihan ng labing-anim at maaari rin nating isulat:

0.5a2 16 = 5 *16 -1 + 10 *16 -2 + 2 *16 -3

Para sa halo-halong numero 7b2.1f9 maaari nating isulat ang:

7b2.1f9 = 7 *16 2 +11 *16 1 +2 *16 0 +1 *16 -1 +15 *16 -2 +9 *16 -3

Bilangin natin ang mga digit ng integer na bahagi ng ilang hexadecimal na numero, mula kanan hanggang kaliwa, bilang 0,1,2...n (nagsisimula ang pagnunumero sa zero!). At ang mga digit ng fractional na bahagi, mula kaliwa hanggang kanan, tulad ng -1,-2,-3...-m, kung gayon ang halaga ng isang tiyak na hexadecimal na numero ay maaaring kalkulahin gamit ang formula:

N = d n 16 n +d n-1 16 n-1 +…+d 1 16 1 +d 0 16 0 +d -1 16 -1 +d -2 16 -2 +…+d -(m-1) 16 -(m-1) +d -m 16 -m

saan: n- ang bilang ng mga digit sa integer na bahagi ng numerong minus one;
m- ang bilang ng mga digit sa fractional na bahagi ng numero
d i- digit na nakatayo i-ika ranggo

Ang formula na ito ay tinatawag na formula para sa bitwise expansion ng isang hexadecimal number, i.e. numerong nakasulat sa hexadecimal number system. Kung papalitan natin ang numerong labing-anim sa formula na ito ng ilang arbitrary na numero q, pagkatapos ay makuha namin ang formula ng pagpapalawak para sa numerong nakasulat sa qth sistema ng numero, i.e. may base q:

N = d n q n +d n-1 q n-1 +…+d 1 q 1 +d 0 q 0 +d -1 q -1 +d -2 q -2 +…+d -(m-1) q - (m-1) +d -m q -m

Gamit ang formula na ito maaari mong palaging kalkulahin ang halaga ng isang numero na nakasulat sa anumang positional number system na may base q.

Ang iba pang mga sistema ng numero ay matatagpuan sa aming website gamit ang mga sumusunod na link.