Decimal To Binary

အခု ကၽြန္ေတာ္တို႔ေတြ Decimal (Base 10) ကေန Binary (Base 2) value ေျပာင္းတာေလး ေရးၾကည့္ရေအာင္။ Computer သမား တစ္ေယာက္ ျဖစ္ရင္ေတာ့ binary ဆိုတာ ဘာလဲ သိဖို႔ လိုအပ္ပါတယ္။ Computer ဟာ binary value နဲ႔ ပဲ အလုပ္လုပ္ပါတယ္။ value က 0 ႏွင့္ 1 ပဲ ရွိပါတယ္။ Decimal value ကေတာ့ 0-9 ဂဏန္းေတြရွိပါတယ္။ ဥပမာ။ 668 ဆိုတဲ့ decimal value ကို binary ေျပာင္းရင္ 1010011100 ဆိုတဲ့ binary value ရပါတယ္။ ဘယ္လို ေျပာင္းရ သလဲဆိုရင္ေတာ့

668 ကို 2 နဲ႔ စားသြားပါတယ္။ ေနာက္ဆံုး သုည ရသည့္ အထိပါ။

668/2 = 334 , Mod : 0
334/2 = 167,  Mod: 0
167/2 = 83,   Mod: 1
83/2 = 41,    Mod: 1
41/2 = 20,    Mod: 1
20/2 = 10,    Mod: 0
10/2 = 5,     Mod: 0
5/2 =  2,     Mod: 1
2/2 = 1,      Mod: 0
1/2 = 0,      Mod: 1

ရလာတဲ့ mod ေတြကို ေျပာင္းျပန္ ယူလိုက္ေတာ့ 1010011100 ထြက္ပါတယ္။ code ဘယ္လို ေရးလို႔ ရမလဲ ဆိုတာကို သေဘာေပါက္ေလာက္ၿပီ ထင္ပါတယ္။

လြယ္ပါတယ္။ ၂ နဲ႔ စားသြားမယ္။ အႂကြင္းေတြကို stack ထဲ ထည့္သြားမယ္။ ၿပီးရင္ pop ျပန္လုပ္လိုက္မယ္။ Stack က first in last out ျဖစ္သည့္ အတြက္ေၾကာင့္ ပထမဆံုး အႂကြင္း ရလာဒ္က ေနာက္ဆံုးမွ ထြက္ပါမယ္။ Decimal to Binary ေျပာင္းဖို႔ အတြက္ stack ကို အသံုးျပဳႏိုင္ပါတယ္။

from stack import Stack def divideBy2(decNumber): remstack = Stack() while decNumber > 0: rem = decNumber % 2 remstack.push(rem) decNumber = decNumber // 2 binString = "" while not remstack.is_empty(): binString = binString + str(remstack.pop()) return binString print(divideBy2(668))

code ေလးကေတာ့ ရွင္းပါတယ္။ စားလဒ္က သုည မျဖစ္မျခင္း loop ပတ္မယ္။ ေနာက္ၿပီးေတာ့ အႂကြင္းေတြကို stack ထဲမွာ ထည့္ထားမယ္။

ၿပီးသြားတဲ့ အခါ stack မကုန္ မျခင္း loop ပတ္ၿပီးေတာ့ pop လုပ္ေပးလိုက္ပါတယ္။

အခုေလာက္ဆိုရင္ေတာ့ Stack ကို သံုးတတ္ေလာက္ၿပီ ထင္ပါတယ္။

Exercises

1.Base 8 ကို ေျပာင္းသည့္ divdeBy8 function ကို ေရးပါ။ 668 (base 10) ၏ base 8 တန္ဖိုးသည္ တန္ဖိုးသည္ 1234 ျဖစ္သည္။ divideBy8(668) ၏ အေျဖသည္ 1234 ထြက္လာရမည္။

2.Base 16 ကို ေျပာင္းသည့္ divdeBy16 function ကို ေရးပါ။ 668 (base 10) ၏ base 16 တန္ဖိုးသည္ တန္ဖိုးသည္ 29C ျဖစ္သည္။ divdeBy16(668) ၏ အေျဖသည္ 29C ထြက္လာရမည္။ base 16 သည္

base 16 base 10
A 10
B 11
C 12
D 13
E 14
F 15

ျဖစ္သည္။ ထို႔ေၾကာင့္ အႂကြင္း ကို if condition သံုးကာ 10 မွ 15 value မ်ားကို ေျပာင္းေပးရန္ လိုသည္။

results matching ""

    No results matching ""