1 katika mfumo wa nambari ya heksadesimali. Mfumo wa nambari ya heksadesimali ni wa nini?

Mfumo wa nambari ya hexadecimal. programu yetu ya kwanza.

Ili kuandika programu katika Mkutano, unahitaji kuelewa mfumo wa nambari ya hexadecimal. Hakuna chochote ngumu juu yake. Tunatumia mfumo wa decimal maishani. Nina hakika nyote mnaijua, kwa hivyo nitajaribu kuelezea mfumo wa hexadecimal kwa kutumia mlinganisho na mfumo wa desimali.

Kwa hivyo, katika mfumo wa decimal, ikiwa tunaongeza sifuri kwa nambari yoyote upande wa kulia, basi nambari hii itaongezeka kwa mara 10. Kwa mfano: 1 x 10 = 10; 10 x 10 = 100; 100 x 10 = 1000, nk. Katika mfumo huu tunatumia nambari kutoka 0 hadi 9, i.e. nambari kumi tofauti (kwa kweli, ndiyo sababu inaitwa decimal).

Katika mfumo wa hexadecimal, tunatumia "tarakimu" kumi na sita. Niliandika haswa neno "tarakimu" katika alama za nukuu, kwa sababu ... Haitumii nambari tu. Na kwa kweli, hiyo inawezaje kuwa? Acha nieleze: kutoka 0 hadi 9 tunahesabu kwa njia sawa na decimal, lakini basi itakuwa kama hii: A, B, C, D, E, F. Nambari F sio ngumu. hesabu, itakuwa sawa na 15 katika mfumo wa decimal (tazama Jedwali 1).

Nambari ya decimal

Nambari ya hexadecimal

Jedwali 1. Mifumo ya desimali na hexadecimal.

Kwa hivyo, ikiwa tunaongeza sifuri kwa haki ya nambari yoyote katika mfumo wa hexadecimal, basi nambari hii itaongezeka kwa16 mara moja.

Mfano 1: 1 x 16 = 10; 10 x 16 = 100; 100 x 16 = 1000, nk.

Je, uliweza kutofautisha nambari za heksadesimali na nambari za desimali katika Mfano wa 1? Na kutoka kwa mfululizo huu: 10, 12, 45, 64, 12, 8, 19? Hizi zinaweza kuwa hexadecimal au desimali. Ili kuzuia machafuko na kompyuta iweze kutofautisha wazi nambari moja kutoka kwa nyingine, katika mkusanyiko ni kawaida kuweka alama h au H baada ya nambari ya hexadecimal ( H ni kifupi cha Kiingereza. hexadesimoli (hexadecimal). Kwa ufupi, wakati mwingine huitwa tu Hex ) . Na usiweke chochote baada ya decimal. Kwa sababu nambari kutoka 0 hadi 9 katika mifumo yote miwili ina maana sawa, kisha nambari zilizoandikwa kama 5 na 5h ni sawa.

Hiyo. Mfano 1 (tazama hapo juu) itakuwa sahihi zaidi kuandika kama hii: 1 x 16 = 10h; 10h x 16 = 100h; 100h x 16 = 1000h. Au kama hii: 1h x 10h = 10h; 10h x 10h = 100h; 100h x 10h = 1000h.

Tutaangalia kwa nini mfumo wa hexadecimal unahitajika katika masuala yanayofuata. Kwa sasa, kwa mpango wetu wa mfano, ambao utajadiliwa hapa chini, tunahitaji kujua kuhusu kuwepo kwa nambari za hexadecimal.

Kwa hiyo, hebu tufanye muhtasari. Mfumo wa nambari ya hexadecimal una tarakimu 10 (kutoka 0 hadi 9) na barua 6 za alfabeti ya Kilatini (A, B, C, D, E, F). Ikiwa tunaongeza sifuri kwa haki ya nambari yoyote katika mfumo wa hexadecimal, basi nambari hii itaongezeka kwa16 mara moja. Ni muhimu sana kuelewa mada hii, kwa kuwa tutaitumia mara kwa mara wakati wa kuandika programu.

Sasa kidogo kuhusu jinsi nitakavyojenga mifano Bungeni. Sio rahisi kabisa kuwawasilisha katika muundo wa HTML, kwa hivyo kwanza kutakuwa na msimbo wa programu yenyewe na mistari iliyohesabiwa, na mara baada yake kutakuwa na maelezo na maelezo.

Kama hivyo:

mistari Msimbo wa programu
(1) hoja, 9

Maelezo:

Katika mstari (1) tunafanya hivi, na kwa mstari (15) tunafanya hivyo.

Ombi kubwa: USINAkili programu kutoka kwa ukurasa hadi kwenye ubao wa kunakili kisha uzibandike kwenye Notepad (au popote pengine)! Zichapishe tena wewe mwenyewe katika kihariri cha maandishi. Ikiwa una printa, kisha chagua programu, uchapishe kipande kilichochaguliwa, na kisha uhamishe kwenye mhariri kutoka kwenye karatasi. Mifano yote lazima ichapiwe wewe mwenyewe! Hii itaharakisha kukariri waendeshaji.

Na zaidi. Hakuna tofauti kati ya herufi ndogo na UPPERCASE katika kiunganishi. Rekodi za fomu:

Mkusanyaji huwaona vivyo hivyo. Unaweza, bila shaka, kulazimisha kiunganishi kutofautisha kati ya herufi ndogo na UPPERCASE, lakini hatutafanya hivi kwa sasa. Ili kufanya programu iwe rahisi kusoma, ni bora kuandika waendeshaji kwa herufi ndogo, na kuanza majina ya subroutines na lebo kwa herufi kubwa. Lakini inategemea nani atakuwa vizuri.

Kwa hivyo, wacha tuendelee kwenye programu yetu ya kwanza:

(1) Sehemu ya CSEG

(2) org 100h

(4) Anza:

(6) mov ah,9

(7) mov dx,offset Message

(8) ndani ya 21h

(10) ndani ya 20h

(11)

(12) Ujumbe db "Hujambo, ulimwengu!$"

(13)CSEG inaisha

(14) mwisho Anza

Ili kuelezea waendeshaji wote katika mfano huu, tutahitaji matoleo kadhaa. Kwa hivyo, tutaacha tu maelezo ya amri zingine katika hatua hii. Fikiria tu kwamba hivi ndivyo inavyopaswa kuwa. Tutawaangalia waendeshaji hawa kwa undani katika siku za usoni. Kwa hivyo, mistari iliyo na nambari (1), (2) na (13) unapuuza tu.

Mistari ya (3), (5), (9) na (11) inasalia tupu. Hii inafanywa kwa uwazi. Mkusanyaji ataziacha tu.

Sasa hebu tuendelee kuzingatia waendeshaji waliobaki. Nambari ya programu huanza na mstari (4). Hii ni alama inayomwambia mkusanyaji hadi mwanzo wa msimbo. Mstari wa (14) una mwisho wa waendeshaji Anza ( Anza Kiingereza Anza; mwisho mwisho). Huu ndio mwisho wa programu. Kwa ujumla, badala ya neno Anza kitu kingine kingeweza kutumika. Kwa mfano, Anza:. Katika kesi hii, tungelazimika kumaliza programu Mwisho wa Mwanzo (14).

Mistari ya (6) (8) inaonyesha ujumbe Hujambo, ulimwengu!. Hapa tutalazimika kuzungumza kwa ufupi juu ya madaftari ya wasindikaji (tutaangalia mada hii kwa undani zaidi katika toleo linalofuata).

Rejista ya processor ni kumbukumbu iliyotengwa maalum kwa kuhifadhi nambari.

Kwa mfano:

Ikiwa tunataka kuongeza nambari mbili, basi katika hisabati tunaiandika kama hii:

A, B na C hizi ni aina ya rejista (ikiwa tunazungumza juu ya kompyuta) ambayo data fulani inaweza kuhifadhiwa. A=5 inaweza kusomeka kama: Weka A nambari 5 .

Ili kukabidhi thamani ya rejista, kuna opereta wa mov katika Assembler (kutoka kwa mzigo wa sogeza wa Kiingereza). Mstari wa (6) unapaswa kusomeka kama hii: Inapakia kwenye rejista A.H.nambari 9 (kwa maneno mengine, tunagawa A.H.namba 9). Hapo chini tutaangalia kwa nini hii ni muhimu.

Katika mstari (7) tunapakia kwenye rejista DX anwani ya ujumbe kwa pato (katika mfano huu itakuwa kambaHabari, ulimwengu!$).

Vikatizo vitashughulikiwa kwa kina katika masuala yanayofuata. Hapa nitasema maneno machache.

Katiza MS-DOS ni aina ya subroutine (sehemu MS-DOS), ambayo inakaa kwa kudumu katika kumbukumbu na inaweza kuitwa wakati wowote kutoka kwa programu yoyote.

Wacha tuzingatie haya hapo juu kwa kutumia mfano (Vidokezo kwa maandishi madogo):

Programu ya kuongeza nambari mbili

Programu za Nyumbani

A=5 Tunaingiza thamani 5 katika kutofautisha A

B=8 kutofautisha B thamani 8

Wito Subroutines Nyongeza

sasa C ni 13

A=10 kitu kimoja, nambari tofauti tu

B=25

Wito Subroutines Nyongeza

sasa C ni sawa na 35

Mwisho wa Mpango

Nyongeza ya Subroutine

C=A+B

ReturnFromSubroutine tunarudi mahali tulipopaita

EndSubroutine

Katika mfano huu, tuliita subroutine mara mbili Nyongeza, ambayo iliongeza nambari mbili zilizopitishwa kwake kwa anuwai A na B . Matokeo yanawekwa katika kutofautiana C. Wakati subroutine inaitwa, kompyuta inakumbuka ambapo iliitwa kutoka, na kisha, wakati subroutine imemaliza kukimbia, kompyuta inarudi mahali ilipoitwa. Hiyo. Unaweza kuita subroutines idadi isiyojulikana ya nyakati kutoka mahali popote.

Wakati wa kutekeleza mstari (8) wa programu ya Mkutano, tunaita subroutine (katika kesi hii inaitwa usumbufu), ambayo inaonyesha mstari kwenye skrini. Kwa kusudi hili, sisi, kwa kweli, tunaweka maadili muhimu katika rejista. Kazi yote muhimu (kutoa mstari, kusonga mshale) inachukuliwa na subroutine. Mstari huu unaweza kusomeka kama hii: piga simu kati ya ishirini na moja ( int kutoka kwa Kiingereza kukatiza kukatiza). Tafadhali kumbuka kuwa baada ya nambari 21 kuna barua h . Hii, kama tunavyojua tayari, ni nambari ya hexadecimal (33 katika desimali). Bila shaka, hakuna kitu kinachotuzuia kuchukua nafasi ya mstari int 21h hadi int 33. Mpango huo utafanya kazi kwa usahihi. Ni kawaida tu katika Assembler kuonyesha nambari ya kukatiza katika hexadecimal.

Katika mstari (10) sisi, kama unavyoweza kukisia, tunapiga simu kukatiza 20 h . Ili kuita usumbufu huu, hauitaji kutaja maadili yoyote kwenye rejista. Inafanya kazi moja tu: kuondoka kwa programu (kutoka kwa DOS). Kama matokeo ya utekelezaji wa usumbufu wa 20h, programu itarudi mahali ilipozinduliwa kutoka (iliyopakiwa, inayoitwa). Kwa mfano, katika Kamanda wa Norton au Navigator ya DOS.

Mstari wa (12) una ujumbe unaopaswa kutolewa. Neno la kwanza ( ujumbe ujumbe) kichwa cha ujumbe. Inaweza kuwa chochote (kwa mfano, fujo au kamba, nk). KUHUSU Makini na mstari (7), ambao tunapakia kwenye rejista DX anwani yetu ya ujumbe.

Tunaweza kuunda mstari mwingine, ambao tutaita Fujo2. Kisha, kuanzia mstari (9), ingiza amri zifuatazo:

(10) mov dx,offset Mess2

(13) Ujumbe db "Hujambo, ulimwengu!$"

(14) Mess2 db "Ni MIMI! $"

na tukusanye tena programu yetu. Natumaini unaweza kukisia kitakachotokea

Zingatia mhusika wa mwisho kwenye mistari Ujumbe na Mess2 - $. Inaashiria mwisho wa mstari. Ikiwa tutaiondoa, basi 21 h kukatiza kutaendelea kutoa hadi itakapokutana na mhusika mahali fulani kwenye kumbukumbu $. Kwenye skrini tutaona takataka.

Ikiwa una kitatuzi, unaweza kuona jinsi programu yetu itafanya kazi.

Lengo la suala hili halikuwa kuelewa kwa undani na kila operator. Hii haiwezekani, kwa sababu bado huna maarifa ya kutosha. Ninaamini kwamba baada ya matoleo 3-4 utaelewa kanuni na muundo wa programu ya Bunge. Labda lugha ya Bunge ilionekana kuwa ngumu kwako, lakini niamini, hii ni kwa mtazamo wa kwanza.

Matokeo tayari yamepokelewa!

Mifumo ya nambari

Kuna mifumo ya nambari ya nafasi na isiyo ya nafasi. Mfumo wa nambari za Kiarabu, ambao tunautumia katika maisha ya kila siku, ni wa nafasi, lakini mfumo wa nambari wa Kirumi sio. Katika mifumo ya nambari, nafasi ya nambari huamua kipekee ukubwa wa nambari. Wacha tuzingatie hili kwa kutumia mfano wa nambari 6372 katika mfumo wa nambari ya desimali. Wacha tuhesabu nambari hii kutoka kulia kwenda kushoto kuanzia sifuri:

Kisha nambari 6372 inaweza kuwakilishwa kama ifuatavyo:

6372=6000+300+70+2 =6·10 3 +3·10 2 +7·10 1 +2·10 0 .

Nambari ya 10 huamua mfumo wa nambari (katika kesi hii ni 10). Thamani za nafasi ya nambari fulani huchukuliwa kama mamlaka.

Fikiria nambari halisi ya desimali 1287.923. Wacha tuihesabu kuanzia nafasi ya sifuri ya nambari kutoka sehemu ya desimali kwenda kushoto na kulia:

Kisha nambari 1287.923 inaweza kuwakilishwa kama:

1287.923 =1000+200+80 +7+0.9+0.02+0.003 = 1·10 3 +2·10 2 +8·10 1 +7·10 0 +9·10 -1 +2·10 -2 +3· 10 -3.

Kwa ujumla, formula inaweza kuwakilishwa kama ifuatavyo:

C n s n +C n-1 · s n-1 +...+C 1 · s 1 +C 0 ·s 0 +D -1 ·s -1 +D -2 ·s -2 +...+D -k ·s -k

ambapo C n ni nambari kamili katika nafasi n, D -k - nambari ya sehemu katika nafasi (-k), s- mfumo wa nambari.

Maneno machache kuhusu mifumo ya nambari Nambari katika mfumo wa nambari ya desimali ina tarakimu nyingi (0,1,2,3,4,5,6,7,8,9), katika mfumo wa nambari ya octal ina tarakimu nyingi. (0,1, 2,3,4,5,6,7), katika mfumo wa nambari ya binary - kutoka kwa seti ya nambari (0,1), katika mfumo wa nambari ya hexadecimal - kutoka kwa seti ya nambari (0,1). ,2,3,4,5,6, 7,8,9,A,B,C,D,E,F), ambapo A,B,C,D,E,F zinalingana na nambari 10,11, 12,13,14,15 Katika jedwali Tab.1 namba zinawasilishwa katika mifumo tofauti ya namba.

Jedwali 1
Nukuu
10 2 8 16
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F

Kubadilisha nambari kutoka kwa nambari moja hadi nyingine

Ili kubadilisha nambari kutoka kwa mfumo wa nambari moja hadi nyingine, njia rahisi ni kwanza kubadilisha nambari hadi mfumo wa nambari ya desimali, na kisha kubadilisha kutoka kwa mfumo wa nambari hadi nambari inayohitajika.

Kubadilisha nambari kutoka kwa mfumo wowote wa nambari hadi mfumo wa nambari ya desimali

Kwa kutumia fomula (1), unaweza kubadilisha nambari kutoka kwa mfumo wowote wa nambari hadi mfumo wa nambari ya desimali.

Mfano 1. Badilisha nambari 1011101.001 kutoka mfumo wa nambari za binary (SS) hadi SS ya desimali. Suluhisho:

1 ·2 6 +0 ·2 5 + 1 · 2 4 + 1 · 2 3 + 1 · 2 2 + 0 · 2 1 + 1 · 2 0 + 0 ·2 -1 + 0 · 2 -2 + 1 ·2 -3 =64+16+8+4+1+1/8=93.125

Mfano2. Badilisha nambari 1011101.001 kutoka mfumo wa nambari ya octal (SS) hadi SS ya desimali. Suluhisho:

Mfano 3 . Badilisha nambari AB572.CDF kutoka mfumo wa nambari ya heksadesimali hadi SS ya desimali. Suluhisho:

Hapa A- kubadilishwa na 10, B- saa 11, C- saa 12, F- kwa 15.

Kubadilisha nambari kutoka kwa mfumo wa nambari ya desimali hadi mfumo mwingine wa nambari

Ili kubadilisha nambari kutoka kwa mfumo wa nambari ya desimali hadi mfumo mwingine wa nambari, unahitaji kubadilisha sehemu kamili ya nambari na sehemu ya sehemu ya nambari kando.

Sehemu kamili ya nambari inabadilishwa kutoka kwa nambari ya SS hadi mfumo mwingine wa nambari kwa kugawanya sehemu kamili ya nambari kwa msingi wa mfumo wa nambari (kwa binary SS - na 2, kwa SS-8 - na 8, kwa 16. -ary SS - kwa 16, nk ) mpaka mabaki yote yanapatikana, chini ya CC ya msingi.

Mfano 4 . Wacha tubadilishe nambari 159 kutoka nambari ya SS hadi SS ya binary:

159 2
158 79 2
1 78 39 2
1 38 19 2
1 18 9 2
1 8 4 2
1 4 2 2
0 2 1
0

Kama inavyoonekana kutoka kwa Mtini. 1, nambari 159 ikigawanywa na 2 inatoa mgawo 79 na salio 1. Zaidi ya hayo, nambari 79 ikigawanywa na 2 inatoa mgawo 39 na salio 1, nk. Kama matokeo, kuunda nambari kutoka kwa mabaki ya mgawanyiko (kutoka kulia kwenda kushoto), tunapata nambari katika binary SS: 10011111 . Kwa hivyo tunaweza kuandika:

159 10 =10011111 2 .

Mfano 5 . Wacha tubadilishe nambari 615 kutoka nambari ya SS hadi SS ya octal.

615 8
608 76 8
7 72 9 8
4 8 1
1

Wakati wa kubadilisha nambari kutoka kwa SS ya desimali hadi SS ya octal, unahitaji kugawanya nambari hiyo kwa 8 hadi upate salio kamili chini ya 8. Kama matokeo, tunapata nambari kutoka kwa mabaki ya mgawanyiko (kutoka kulia kwenda kushoto). nambari katika octal SS: 1147 (tazama Mchoro 2). Kwa hivyo tunaweza kuandika:

615 10 =1147 8 .

Mfano 6 . Wacha tubadilishe nambari 19673 kutoka kwa mfumo wa nambari ya desimali hadi hexadecimal SS.

19673 16
19664 1229 16
9 1216 76 16
13 64 4
12

Kama inavyoonekana kutoka kwa Kielelezo 3, kwa kugawanya nambari 19673 na 16 mfululizo, mabaki ni 4, 12, 13, 9. Katika mfumo wa nambari ya hexadecimal, nambari 12 inalingana na C, nambari 13 hadi D. nambari ya heksadesimali ni 4CD9.

Ili kubadilisha sehemu za kawaida za decimal (nambari halisi iliyo na sehemu kamili ya sifuri) kuwa mfumo wa nambari na msingi s, ni muhimu kuzidisha nambari hii kwa s hadi sehemu ya sehemu iwe na sifuri safi, au tupate nambari inayotakiwa ya nambari. . Ikiwa, wakati wa kuzidisha, nambari iliyo na sehemu kamili zaidi ya sifuri inapatikana, basi sehemu hii kamili haizingatiwi (zimejumuishwa katika matokeo).

Wacha tuangalie yaliyo hapo juu kwa mifano.

Mfano 7 . Wacha tubadilishe nambari 0.214 kutoka kwa mfumo wa nambari ya desimali hadi SS ya binary.

0.214
x 2
0 0.428
x 2
0 0.856
x 2
1 0.712
x 2
1 0.424
x 2
0 0.848
x 2
1 0.696
x 2
1 0.392

Kama inavyoonekana kutoka kwa Mchoro 4, nambari 0.214 inazidishwa kwa mlolongo na 2. Ikiwa matokeo ya kuzidisha ni nambari iliyo na sehemu kamili zaidi ya sifuri, basi sehemu kamili imeandikwa kando (upande wa kushoto wa nambari), na nambari imeandikwa na sehemu kamili ya sifuri. Ikiwa kuzidisha kunasababisha nambari iliyo na sehemu kamili ya sifuri, basi sifuri imeandikwa kushoto kwake. Mchakato wa kuzidisha unaendelea hadi sehemu ya sehemu ifikie sifuri safi au tunapata nambari inayotakiwa ya nambari. Kuandika nambari za ujasiri (Mchoro 4) kutoka juu hadi chini tunapata nambari inayohitajika katika mfumo wa nambari ya binary: 0. 0011011 .

Kwa hivyo tunaweza kuandika:

0.214 10 =0.0011011 2 .

Mfano 8 . Wacha tubadilishe nambari 0.125 kutoka kwa mfumo wa nambari ya desimali hadi SS ya binary.

0.125
x 2
0 0.25
x 2
0 0.5
x 2
1 0.0

Ili kubadilisha nambari 0.125 kutoka kwa SS ya decimal hadi kwa binary, nambari hii inazidishwa sequentially na 2. Katika hatua ya tatu, matokeo ni 0. Kwa hiyo, matokeo yafuatayo yanapatikana:

0.125 10 =0.001 2 .

Mfano 9 . Wacha tubadilishe nambari 0.214 kutoka kwa mfumo wa nambari ya desimali hadi hexadecimal SS.

0.214
x 16
3 0.424
x 16
6 0.784
x 16
12 0.544
x 16
8 0.704
x 16
11 0.264
x 16
4 0.224

Kufuatia mifano 4 na 5, tunapata nambari 3, 6, 12, 8, 11, 4. Lakini katika hexadecimal SS, nambari 12 na 11 zinalingana na nambari C na B. Kwa hivyo, tunayo:

0.214 10 =0.36C8B4 16 .

Mfano 10 . Wacha tubadilishe nambari 0.512 kutoka kwa mfumo wa nambari ya desimali hadi octal SS.

0.512
x 8
4 0.096
x 8
0 0.768
x 8
6 0.144
x 8
1 0.152
x 8
1 0.216
x 8
1 0.728

Nimepata:

0.512 10 =0.406111 8 .

Mfano 11 . Wacha tubadilishe nambari 159.125 kutoka kwa mfumo wa nambari ya desimali hadi SS ya binary. Ili kufanya hivyo, tunatafsiri kando sehemu kamili ya nambari (Mfano 4) na sehemu ya sehemu ya nambari (Mfano 8). Tukichanganya zaidi matokeo haya tunapata:

159.125 10 =10011111.001 2 .

Mfano 12 . Wacha tubadilishe nambari 19673.214 kutoka kwa mfumo wa nambari ya desimali hadi SS ya hexadecimal. Ili kufanya hivyo, tunatafsiri kando sehemu kamili ya nambari (Mfano 6) na sehemu ya sehemu ya nambari (Mfano 9). Zaidi ya hayo, kwa kuchanganya matokeo haya tunapata.

Mfumo wa nambari ya hexadecimal una alfabeti yenye tarakimu 16:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, b, c, d, e, f.

Wakati wa kuandika nambari katika mfumo wa hexadecimal, herufi A, B, C, D, E, F hutumiwa kwa mtiririko huo kuandika nambari zinazoashiria nambari 10, 11, 12. 13, 14. 15.

Kubadilisha nambari kutoka hexadecimal hadi desimali

Unaweza kubadilisha nambari yoyote ya heksadesimali kuwa desimali kwa kutumia fomula inayojulikana tayari

Mifano.

    AE07 16 =10∙16 3 +14∙16 2 +0∙16 1 +7∙16 0 =44551 10.

    100 16 =1∙16 2 +0∙16 1 +0∙16 0 =256 10 .

    58 16 =5∙16 1 +8∙16 0 =.88 10 .

    2A 16 =2∙16 1 +10∙16 0 =42 10.

Kubadilisha nambari kutoka kwa mfumo wa desimali hadi hexadecimal hufanywa kwa njia sawa na kwa binary.

Kubadilisha nambari kutoka hexadecimal hadi binary na kinyume chake

Unaweza kubadilisha nambari yoyote ya heksadesimali kuwa ya binary kama ifuatavyo. Kila tarakimu ya nambari ya hexadecimal imeandikwa kama nambari ya binary yenye tarakimu nne - daftari. Baada ya hayo, zero upande wa kushoto zinaweza kuachwa.

2) 2A= 0010 1010 2 = 101010 2 .

3) 58 16 = 0101 1000 2 = 1011000 2 .

Kinyume chake, unaweza kubadilisha nambari yoyote ya binary hadi hexadecimal kwa njia ile ile. Kila tarakimu nne za binary, kuhesabu kutoka kulia kwenda kushoto, zimeandikwa kama tarakimu moja ya heksadesimali. Nambari hizi pia ziko kutoka kulia kwenda kushoto.

Mifano.

2. 101010 2 = 10 1010 2 = 2A.

3. 1011000 2 = 101 1000 2 = 58 16 .

Mfumo wa nambari ya Octal

Mfumo wa nambari ya octal una alfabeti yenye tarakimu 8:

0, 1, 2, 3, 4, 5, 6, 7.

Kubadilisha nambari kutoka kwa mfumo wa desimali hadi octal na nyuma kunafanywa kwa njia sawa na kubadilisha hadi/kutoka kwa mfumo wa jozi.

Kubadilisha nambari kutoka octal hadi binary na nyuma

Kila tarakimu ya nambari ya octal imeandikwa kama nambari ya binary yenye tarakimu tatu - utatu.

Mifano.

2563 8 = 010 101 110 011 2 =10101110011 2 .

1001101 2 = 001 001 101 2 = 115 8 .

Nyenzo za mbinu za somo la maabara No

Mada ya somo la maabara: Mifumo ya nambari. Maelezo ya kipimo.

Idadi ya saa: 2.

Mifano na ufumbuzi

    Tafsiri kutokauk mfumo wa -ary hadi mfumo wa 10-ary. Tuseme tunahitaji kubadilisha nambari katika mfumo fulani wa nambari hadi desimali. Ili kufanya hivyo, unahitaji kuiwakilisha kwa fomu

11100110 2 = 1∙2 7 + 1∙2 6 + 1∙2 5 + 0∙2 4 + 0∙2 3 + 1∙2 2 + 1∙2 1 + 0∙2 0 = 128 + 64 + 32 + 4 + 2 = 230 10 .

2401 5 = 2∙5 3 + 4∙5 2 + 0∙5 1 + 1∙5 0 = 250 + 100 + 0 + 1 = 351.

    Ubadilishaji kutoka kwa mfumo wa tarakimu 10 hadiuk -ichnaya.

2.1 98 10 → X 2.

Tunagawanya nambari kwa 2. Kisha tunagawanya mgawo usio kamili na 2. Tunaendelea mpaka mgawo usio kamili unakuwa chini ya 2, i.e. sawa na 1.

    98: 2 = 49. Salio - 0 .

    49: 2 = 24. Salio - 1 .

    24: 2 = 12. Salio - 0 .

    12: 2 = 6. Salio - 0 .

    6: 2 = 3. Salio - 0 .

    3: 2 = 1 . Salio - 1 .

Kwa kuwa sehemu ya mwisho ya mgawo ni 1, mchakato umekwisha. Tunaandika mabaki yote kutoka chini hadi juu, kuanzia na mgawo wa mwisho usio kamili, na tunapata nambari 1100010. Kwa hivyo 98 10 = 1100010 2.

2.2 2391 10 → X 16.

Gawanya nambari na 16. Kisha gawanya sehemu ya mgawo kwa 16. Endelea hadi sehemu ya mgawo iwe chini ya 16.

    2391: 16 = 149. Salio - 7 .

    149: 16 = 9 . Salio - 5 .

Kwa kuwa sehemu ya mwisho ya mgawo (9) ni chini ya 16, mchakato umekwisha. Tunaandika, kuanzia mgawo wa mwisho usio kamili, mabaki yote kutoka chini hadi juu na tunapata nambari 957. Kwa hivyo 2391 10 = 957 16.

2.3 12165 10 → X 2.

Ukibadilisha kwa mgawanyiko kuwa mfumo wa binary, unapata mchakato mgumu sana. Unaweza kwanza kubadilisha nambari kuwa octal, na kisha ubadilishe nambari za octal kutoka kulia kwenda kushoto na triad.

12165 10 = 27605 8 = 010 111 110 000 101 = 10111110000101.

    Kuamua msingi wa mfumo wa nambariuk .

Mvulana mmoja aliandika hivi kujihusu: “Nina vidole 24, 5 kwa kila mkono, na 12 kwenye miguu yangu.” Hii inawezaje kuwa?

Suluhisho. Inahitajika kuamua msingi wa mfumo wa nambari uk. Kwa kuwa tunajua kuwa kuna vidole 10 tu 10, basi 12 uk =1∙uk+2 = 10 10 . Kuanzia hapa tunapata equation uk + 2 = 10  uk= 8. Kwa hivyo mvulana alimaanisha nambari katika mfumo wa octal. Hakika, kuna 24 8 = 2∙8 + 4 = 20 10 vidole, na 12 8 = 1∙8 + 2 = 10 10 vidole.

Mtu yeyote anayewasiliana na kompyuta au vifaa vingine vya kidijitali amekumbana na maingizo ya ajabu kama vile 10FEF, ambayo yanaonekana kama aina fulani ya msimbo kwa wasiojua. Ni nini kilichofichwa nyuma ya alama hizi? Inageuka kuwa ni nambari tu. Wale wanaotumia hexadecimal

Mifumo ya nambari

Kila mtoto wa shule anajua, au angalau amesikia mahali fulani, kwamba nambari zote ambazo sisi hutumia fomu hii ina jina hili kwa sababu tu kuna alama kumi tofauti ndani yake (kutoka 0 hadi 9). Nambari yoyote katika mfumo wetu wa kawaida inaweza kuandikwa kwa msaada wao. Walakini, zinageuka kuwa sio rahisi kila wakati kuitumia. Kwa mfano, wakati wa kubadilishana habari kati ya vifaa vya dijiti, ni rahisi kutumia mfumo wa nambari ambao kuna nambari mbili tu: "0" - hakuna ishara - au "1" - kuna ishara (voltage au kitu kingine). Inaitwa binary. Walakini, ili kuelezea michakato iliyo ndani ya vifaa kama hivyo, italazimika kuandika maandishi ambayo ni marefu sana na ngumu kuelewa. Kwa hivyo, mfumo wa nambari ya hexadecimal uligunduliwa.

Wazo la mfumo wa hexadecimal

Kwa nini vifaa vya dijiti vinatumia mfumo ambao una alama kumi na sita tofauti? Kama unavyojua, habari kwenye kompyuta hupitishwa kwa njia ya ka, ambayo kawaida huwa na bits 8. Sehemu ya data - neno la mashine - inajumuisha ka 2, ambayo ni, bits 16. Kwa hivyo, kwa msaada wa alama kumi na sita tofauti, inawezekana kuelezea habari ambayo ni chembe ndogo zaidi katika kubadilishana. Mfumo wa nambari ya hexadecimal ni pamoja na nambari zetu za kawaida (kwa kawaida, kutoka 0 hadi 9), pamoja na barua za kwanza (A, B, C, D, E, F). Ni kwa msaada wa alama hizi kwamba ni desturi kuandika kitengo chochote cha habari. Unaweza kufanya shughuli zozote za hesabu nao. Hiyo ni kuongeza, kutoa, kuzidisha, kugawanya. Matokeo pia yatakuwa nambari ya hexadecimal.

Inatumika wapi?

Mfumo wa hexadecimal hutumiwa kurekodi misimbo ya makosa. Wanaweza kutokea wakati wa uendeshaji wa bidhaa mbalimbali za programu. Kwa mfano, hii ndio jinsi makosa ya mfumo wa uendeshaji yanavyowekwa. Kila nambari ni ya kawaida. Unaweza kujua ni kosa gani hasa lilitokea wakati wa mchakato wa kazi kwa kuifafanua kwa kutumia maagizo. Alama kama hizo pia hutumiwa wakati wa kuandika programu katika lugha za kiwango cha chini, kama vile mkusanyiko. Mfumo wa nambari ya hexadecimal pia unapendwa na watengeneza programu kwa sababu vipengele vyake vinaweza kubadilishwa kwa urahisi sana kuwa binary, ambazo ni "asili" kwa teknolojia zote za digital. Alama hizi pia hutumiwa kuelezea mipango ya rangi. Kwa kuongezea, faili zote kwenye kompyuta (maandishi, picha, na hata muziki au video) zinawasilishwa baada ya utangazaji kama mlolongo Ni rahisi zaidi kutazama chanzo katika mfumo wa herufi za hexadecimal.

Kwa kweli, nambari yoyote inaweza kuandikwa katika mifumo tofauti ya nambari. Hii ni desimali, binary, na hexadecimal. Ili kutafsiri neno kutoka kwa mojawapo hadi nyingine, unapaswa kutumia huduma kama vile mfasiri wa mfumo wa nambari, au uifanye mwenyewe kwa kutumia algoriti maalum.

Ili kuandika programu katika Mkutano, unahitaji kuelewa mfumo wa nambari ya hexadecimal. Hakuna chochote ngumu juu yake. Tunatumia mfumo wa decimal maishani. Nina hakika nyote mnaijua, kwa hivyo nitajaribu kuelezea mfumo wa hexadecimal kwa kutumia mlinganisho na mfumo wa desimali.

Kwa hivyo, katika mfumo wa decimal, ikiwa tunaongeza sifuri kwa nambari yoyote upande wa kulia, basi nambari hii itaongezeka kwa mara 10. Kwa mfano: 1 x 10 = 10; 10 x 10 = 100; 100 x 10 = 1000, nk. Katika mfumo huu tunatumia nambari kutoka 0 hadi 9, i.e. nambari kumi tofauti (kwa kweli, ndiyo sababu inaitwa decimal).

Katika mfumo wa hexadecimal, tunatumia "tarakimu" kumi na sita. Niliandika haswa neno "tarakimu" katika alama za nukuu, kwa sababu ... Haitumii nambari tu. Na kwa kweli, hiyo inawezaje kuwa? Acha nieleze: kutoka 0 hadi 9 tunahesabu kwa njia sawa na decimal, lakini basi itakuwa kama hii: A, B, C, D, E, F. Nambari F sio ngumu. hesabu, itakuwa sawa na 15 katika mfumo wa decimal (tazama Jedwali 1).

Nambari ya decimal

Nambari ya hexadecimal

Jedwali 1. Mifumo ya desimali na hexadecimal.

Kwa hivyo, ikiwa tunaongeza sifuri kwa haki ya nambari yoyote katika mfumo wa hexadecimal, basi nambari hii itaongezeka kwa16 mara moja.

Mfano 1: 1 x 16 = 10; 10 x 16 = 100; 100 x 16 = 1000, nk.

Je, uliweza kutofautisha nambari za heksadesimali na nambari za desimali katika Mfano wa 1? Na kutoka kwa mfululizo huu: 10, 12, 45, 64, 12, 8, 19? Hizi zinaweza kuwa hexadecimal au desimali. Ili kuzuia machafuko na kompyuta iweze kutofautisha wazi nambari moja kutoka kwa nyingine, katika mkusanyiko ni kawaida kuweka alama h au H baada ya nambari ya hexadecimal ( H ni kifupi cha Kiingereza. hexadesimoli (hexadecimal). Kwa ufupi, wakati mwingine huitwa tu Hex ) . Na usiweke chochote baada ya decimal. Kwa sababu nambari kutoka 0 hadi 9 katika mifumo yote miwili ina maana sawa, kisha nambari zilizoandikwa kama 5 na 5h ni sawa.

Hiyo. Mfano 1 (tazama hapo juu) itakuwa sahihi zaidi kuandika kama hii: 1 x 16 = 10h; 10h x 16 = 100h; 100h x 16 = 1000h. Au kama hii: 1h x 10h = 10h; 10h x 10h = 100h; 100h x 10h = 1000h.

Tutaangalia kwa nini mfumo wa hexadecimal unahitajika katika masuala yanayofuata. Kwa sasa, kwa mpango wetu wa mfano, ambao utajadiliwa hapa chini, tunahitaji kujua kuhusu kuwepo kwa nambari za hexadecimal.

Kwa hiyo, hebu tufanye muhtasari. Mfumo wa nambari ya hexadecimal una tarakimu 10 (kutoka 0 hadi 9) na barua 6 za alfabeti ya Kilatini (A, B, C, D, E, F). Ikiwa tunaongeza sifuri kwa haki ya nambari yoyote katika mfumo wa hexadecimal, basi nambari hii itaongezeka kwa16 mara moja. Ni muhimu sana kuelewa mada hii, kwa kuwa tutaitumia mara kwa mara wakati wa kuandika programu.

Sasa kidogo kuhusu jinsi nitakavyojenga mifano Bungeni. Sio rahisi kabisa kuwawasilisha katika muundo wa HTML, kwa hivyo kwanza kutakuwa na msimbo wa programu yenyewe na mistari iliyohesabiwa, na mara baada yake kutakuwa na maelezo na maelezo.

Kama hivyo:

mistari Msimbo wa programu
(1) hoja, 9

Maelezo:

Katika mstari (1) tunafanya hivi, na kwa mstari (15) tunafanya hivyo.

Ombi kubwa: USINAkili programu kutoka kwa ukurasa hadi kwenye ubao wa kunakili kisha uzibandike kwenye Notepad (au popote pengine)! Zichapishe tena wewe mwenyewe katika kihariri cha maandishi. Ikiwa una printa, kisha chagua programu, uchapishe kipande kilichochaguliwa, na kisha uhamishe kwenye mhariri kutoka kwenye karatasi. Mifano yote lazima ichapiwe wewe mwenyewe! Hii itaharakisha kukariri waendeshaji.

Na zaidi. Hakuna tofauti kati ya herufi ndogo na UPPERCASE katika kiunganishi. Rekodi za fomu:

Mkusanyaji huwaona vivyo hivyo. Unaweza, bila shaka, kulazimisha kiunganishi kutofautisha kati ya herufi ndogo na UPPERCASE, lakini hatutafanya hivi kwa sasa. Ili kufanya programu iwe rahisi kusoma, ni bora kuandika waendeshaji kwa herufi ndogo, na kuanza majina ya subroutines na lebo kwa herufi kubwa. Lakini inategemea nani atakuwa vizuri.

Kwa hivyo, wacha tuendelee kwenye programu yetu ya kwanza:

(1) Sehemu ya CSEG

(2) org 100h

(4) Anza:

(6) mov ah,9

(7) mov dx,offset Message

(8) ndani ya 21h

(10) ndani ya 20h

(11)

(12) Ujumbe db "Hujambo, ulimwengu!$"

(13)CSEG inaisha

(14) mwisho Anza

Ili kuelezea waendeshaji wote katika mfano huu, tutahitaji matoleo kadhaa. Kwa hivyo, tutaacha tu maelezo ya amri zingine katika hatua hii. Fikiria tu kwamba hivi ndivyo inavyopaswa kuwa. Tutawaangalia waendeshaji hawa kwa undani katika siku za usoni. Kwa hivyo, mistari iliyo na nambari (1), (2) na (13) unapuuza tu.

Mistari ya (3), (5), (9) na (11) inasalia tupu. Hii inafanywa kwa uwazi. Mkusanyaji ataziacha tu.

Sasa hebu tuendelee kuzingatia waendeshaji waliobaki. Nambari ya programu huanza na mstari (4). Hii ni alama inayomwambia mkusanyaji hadi mwanzo wa msimbo. Mstari wa (14) una mwisho wa waendeshaji Anza ( Anza Kiingereza Anza; mwisho mwisho). Huu ndio mwisho wa programu. Kwa ujumla, badala ya neno Anza kitu kingine kingeweza kutumika. Kwa mfano, Anza:. Katika kesi hii, tungelazimika kumaliza programu Mwisho wa Mwanzo (14).

Mistari ya (6) (8) inaonyesha ujumbe Hujambo, ulimwengu!. Hapa tutalazimika kuzungumza kwa ufupi juu ya madaftari ya wasindikaji (tutaangalia mada hii kwa undani zaidi katika toleo linalofuata).

Rejista ya processor ni kumbukumbu iliyotengwa maalum kwa kuhifadhi nambari.

Kwa mfano:

Ikiwa tunataka kuongeza nambari mbili, basi katika hisabati tunaiandika kama hii:

A, B na C hizi ni aina ya rejista (ikiwa tunazungumza juu ya kompyuta) ambayo data fulani inaweza kuhifadhiwa. A=5 inaweza kusomeka kama: Weka A nambari 5 .

Ili kukabidhi thamani ya rejista, kuna opereta wa mov katika Assembler (kutoka kwa mzigo wa sogeza wa Kiingereza). Mstari wa (6) unapaswa kusomeka kama hii: Inapakia kwenye rejista A.H.nambari 9 (kwa maneno mengine, tunagawa A.H.namba 9). Hapo chini tutaangalia kwa nini hii ni muhimu.

Katika mstari (7) tunapakia kwenye rejista DX anwani ya ujumbe kwa pato (katika mfano huu itakuwa kambaHabari, ulimwengu!$).

Vikatizo vitashughulikiwa kwa kina katika masuala yanayofuata. Hapa nitasema maneno machache.

Katiza MS-DOS ni aina ya subroutine (sehemu MS-DOS), ambayo inakaa kwa kudumu katika kumbukumbu na inaweza kuitwa wakati wowote kutoka kwa programu yoyote.

Wacha tuzingatie haya hapo juu kwa kutumia mfano (Vidokezo kwa maandishi madogo):

Programu ya kuongeza nambari mbili

Programu za Nyumbani

A=5 Tunaingiza thamani 5 katika kutofautisha A

B=8 kutofautisha B thamani 8

Wito Subroutines Nyongeza

sasa C ni 13

A=10 kitu kimoja, nambari tofauti tu

B=25

Wito Subroutines Nyongeza

sasa C ni sawa na 35

Mwisho wa Mpango

Nyongeza ya Subroutine

C=A+B

ReturnFromSubroutine tunarudi mahali tulipopaita

EndSubroutine

Katika mfano huu, tuliita subroutine mara mbili Nyongeza, ambayo iliongeza nambari mbili zilizopitishwa kwake kwa anuwai A na B . Matokeo yanawekwa katika kutofautiana C. Wakati subroutine inaitwa, kompyuta inakumbuka ambapo iliitwa kutoka, na kisha, wakati subroutine imemaliza kukimbia, kompyuta inarudi mahali ilipoitwa. Hiyo. Unaweza kuita subroutines idadi isiyojulikana ya nyakati kutoka mahali popote.

Wakati wa kutekeleza mstari (8) wa programu ya Mkutano, tunaita subroutine (katika kesi hii inaitwa usumbufu), ambayo inaonyesha mstari kwenye skrini. Kwa kusudi hili, sisi, kwa kweli, tunaweka maadili muhimu katika rejista. Kazi yote muhimu (kutoa mstari, kusonga mshale) inachukuliwa na subroutine. Mstari huu unaweza kusomeka kama hii: piga simu kati ya ishirini na moja ( int kutoka kwa Kiingereza kukatiza kukatiza). Tafadhali kumbuka kuwa baada ya nambari 21 kuna barua h . Hii, kama tunavyojua tayari, ni nambari ya hexadecimal (33 katika desimali). Bila shaka, hakuna kitu kinachotuzuia kuchukua nafasi ya mstari int 21h hadi int 33. Mpango huo utafanya kazi kwa usahihi. Ni kawaida tu katika Assembler kuonyesha nambari ya kukatiza katika hexadecimal.

Katika mstari (10) sisi, kama unavyoweza kukisia, tunapiga simu kukatiza 20 h . Ili kuita usumbufu huu, hauitaji kutaja maadili yoyote kwenye rejista. Inafanya kazi moja tu: kuondoka kwa programu (kutoka kwa DOS). Kama matokeo ya utekelezaji wa usumbufu wa 20h, programu itarudi mahali ilipozinduliwa kutoka (iliyopakiwa, inayoitwa). Kwa mfano, katika Kamanda wa Norton au Navigator ya DOS.

Mstari wa (12) una ujumbe unaopaswa kutolewa. Neno la kwanza ( ujumbe ujumbe) kichwa cha ujumbe. Inaweza kuwa chochote (kwa mfano, fujo au kamba, nk). KUHUSU Makini na mstari (7), ambao tunapakia kwenye rejista DX anwani yetu ya ujumbe.

Tunaweza kuunda mstari mwingine, ambao tutaita Fujo2. Kisha, kuanzia mstari (9), ingiza amri zifuatazo:

(10) mov dx,offset Mess2

(13) Ujumbe db "Hujambo, ulimwengu!$"

(14) Mess2 db "Ni MIMI! $"

na tukusanye tena programu yetu. Natumaini unaweza kukisia kitakachotokea

Zingatia mhusika wa mwisho kwenye mistari Ujumbe na Mess2 - $. Inaashiria mwisho wa mstari. Ikiwa tutaiondoa, basi 21 h kukatiza kutaendelea kutoa hadi itakapokutana na mhusika mahali fulani kwenye kumbukumbu $. Kwenye skrini tutaona takataka.

Ikiwa una kitatuzi, unaweza kuona jinsi programu yetu itafanya kazi.

Lengo la suala hili halikuwa kuelewa kwa undani na kila operator. Hii haiwezekani, kwa sababu bado huna maarifa ya kutosha. Ninaamini kwamba baada ya matoleo 3-4 utaelewa kanuni na muundo wa programu ya Bunge. Labda lugha ya Bunge ilionekana kuwa ngumu kwako, lakini niamini, hii ni kwa mtazamo wa kwanza.