Տասական համակագի թվերի փոխարկումը երկուական համակարգի թվերի

Տասական թվերը (այն թվերը, որոնք մենք օգտագործում ենք ամեն օր) երկուական համակարգի թվերի (որոնք հիմնված են 2-ի աստիճանների վրա) փոխարկելը համակարգչային գիտության հիմնական հմտություններից է։ Երկուական համակարգում ամեն թվանշան ներկայացնում է 2-ի որոշակի աստիճան։ Կարող եք երկուական թիվը դիտարկել որպես ցուցում այն մասին, թե որ 2-ի աստիճաններն են անհրաժեշտ, որպեսզի դրանց գումարը հավասար լինի տրված թվին։

Թիվ տասական համակարգում

128

64

32

16

8

4

2

1

Գումար

114

0

1

1

1

0

0

1

0

114 = 64 + 32 + 16 + 2

12

0

0

0

0

1

1

0

0

12 = 8 + 4

13

0

0

0

0

1

1

0

1

13 = 8 + 4 + 1

Երկուական ներկայացման յուրաքանչյուր 1 նշում է, որ համապատասխան 2-ի աստիճանը ներառված է գումարի մեջ, իսկ 0-ները ցույց են տալիս, որ տվյալ աստիճանն այդ գումարի մեջ չի մտնում։ Երկուական համակարգի առանձնահատկությունը կայանում է նրա պարզության և միարժեք ներկայացման մեջ։

Ամենաաջ բիթի հետ աշխատանք

Սկսելու համար, դիտարկենք, թե ինչպես կարելի է գտնել թվի երկուական ներկայացման ամենաաջ կողմում գտնվող բիթը։ Տասական համակարգում, եթե ցանկանում ենք գտնել թվի վերջին թվանշանը, պարզապես վերցնում ենք 10-ի բաժանելիս (% 10) ստացվող մնացորդը։ Նույն գաղափարն աշխատում է նաև երկուական համակարգում․ աջ բիթը գտնելու համար պետք է վերցնել տվյալ թվը 2-ի բաժանելիս ստացվող մնացորդը (% 2)։ Այստեղից հետևում է, որ յուրաքանչյուր զույգ թիվ երկուական համակարգում ավարտվում է 0-ով, իսկ ցանկացած կենտ թիվ՝ 1-ով։

Օրինակ․

  • 114-ի աջ բիթը 0 է, քանի որ 114 % 2 = 0:

  • 13-ի աջ բիտը 1 է, քանի որ 13 % 2 = 1:

Երկուական թվի տեղաշարժը (shift)

Փորձենք հասկանալ, թե ինչպես է կարելի տեղաշարժել թվի ամբողջ երկուական ներկայացումը։ Այդ քայլը համարժեք է տասական համակարգում թիվը 2-ի բաժանելուն (/ 2 կամ // 2 Python-ում)։ Այս գործողությունը «հեռացնում» է ամենաաջ բիթը, և հաջորդ բիթը դառնում է նոր աջ բիթ։

  • 114 (որի երկուական տեսքն է ) մեկ անգամ աջ տեղաշարժելու արդյունքում ստանում ենք , ինչը տասականում հավասար է 114 / 2 = 57:

  • 13 (որի երկուական տեսքն է ) մեկ դիրքով աջ տեղաշարժելու արդյունքում ստանում ենք , ինչը տասականում հավասար է 13 / 2 = 6:

Փոխարկման ալգորիթմը

Ունենալով ամենաաջ բիթի հետ աշխատելու այս երկու հնարավորությունը, կարելի է կազմել պարզ ալգորիթմ, որը տասական թիվը երկուական համակարգի թվի կվերածի։ Ալգորիթմը կաշխատի այսպես.

  1. Ստեղծել դատարկ տող, որտեղ պահվելու է երկուական ներկայացումը։

  2. Քանի դեռ թիվը մեծ է 0-ից․

    • Վերցնենք ամենաաջ բիթը (2-ի վրա բաժանելիս մնացորդը վերցնելով)

    • Ավելացնենք այդ բիթը մեր բինար տողին

    • Բաժանենք թիվը 2-ի, որպեսզի այն երկուական համակարգում աջ տեղաշարժենք

  3. Վերադարձնել ստացված տողը, եթե այն դատարկ չէ, հակառակ դեպքում՝ 0։

Այս ալգորիթմով ցանկացած տասական համակարգի թիվ կարելի է փոխարկել երկուական թվի։

Կարճ իրականացում
b, d = '101001101', 0   # երկուական և տասնորդական թվերը
power = 1               # Ներկա 2-ի աստիճանը (1, 2, 4, 8, 16, ...)

for bi in b[::-1]:      # Ամենափոքր բիտից մինչև ամենամեծը
    d += int(bi) * power
    power *= 2

print(d)

binary → decimal conversion

b, d = '', 5234         # երկուական և տասնորդական թվերը

while d > 0:            # Քանի դեռ կա մշակման ենթակա բիթ
    b = str(d % 2) + b  # Ամենաաջ բիթը դնում ենք տողի ձախ մասում
    d //= 2             # Թիվը տեղաշարժում ենք աջ (ջնջում աջ բիթը)

print(b if b != '' else 0)

decimal → binary conversion

To check your solution you need to sign in
Sign in to continue