Classical Computing 2: Radix Conversion
Radix Conversion ကို Base Conversion လို့လဲ ခေါ်ပါတယ်။ အဓိကက မတူညီတဲ့ Base တစ်ခုနဲ့ တစ်ခုကို ပြောင်းလဲတာကို ဆိုလိုပါတယ်။ ဥပမာ - Base 2 ကနေ Base 10 ပြောင်းတာမျို...
Radix Conversion ကို Base Conversion လို့လဲ ခေါ်ပါတယ်။ အဓိကက မတူညီတဲ့ Base တစ်ခုနဲ့ တစ်ခုကို ပြောင်းလဲတာကို ဆိုလိုပါတယ်။ ဥပမာ - Base 2 ကနေ Base 10 ပြောင်းတာမျိုးပါ။ Mathematics မှာဆိုရင်တော့ ဘယ် Base ကနေ ဘယ် Base ကိုမဆို ပြောင်းရင် Radix Conversion လို့ကို ခေါ်ပါတယ်။ ဥပမာ - Base 6 ကနေ Base 12 ပြောင်းလဲ Radix Conversion ပါပဲ။ ဒါပေမဲ့ Classical Computing မှာတော့ Binary (Base 2), Octal (Base 8), Decimal (Base 10), Hexadecimal (Base 16) ဒီ (၄) ခုရဲ့ သူတို့အချင်းချင်း ပြောင်းတာကိုပဲ မှတ်ထားရင် အဆင်ပြေပါတယ်။ ဒီ (၄) ခုပဲ ရှိတာမို့ပါ။ ပြောင်းနည်းတွေကတော့ အောက်ကအတိုင်း များပါတယ်။

Binary - Decimal
Binary - Octal
Binary - Hexadecimal
Decimal - Binary
Decimal - Octal
Decimal - Hexadecimal
Octal - Binary
Octal - Decimal
Octal - Hexadecimal
Hexadecimal - Binary
Hexadecimal - Octal
Hexadecimal - Decimal
ဒါပေမဲ့ အခြေခံတွက်နည်းကတော့ (၂) မျိုးပဲ ရှိပါတယ်။ မှတ်ရလွယ်အောင် ပြောပြတာပါ။ အဲ့ (၂) မျိုးကို Binary - Decimal နှင့် Decimal - Binary တွက်ထုတ်ပုံနဲ့ ဥပမာ ပြပါမယ်။
Binary - Decimal
(1011)₂
= (1 x 2³) + (0 x 2²) + (1 x 2¹) + (1 x 2⁰)
= 8 + 0 + 2 + 1
= (11)₁₀
Decimal - Binary
(11)₁₀
= 11 ÷ 2 = 5, အကြွင်း = 1
= 5 ÷ 2 = 2, အကြွင်း = 1
= 2 ÷ 2 = 1, အကြွင်း = 0
= 1 ÷ 2 = 0, အကြွင်း = 1
အကြွင်းကို ပြောင်းပြန် (အောက်ကနေ အပေါ်) ယူရင် (1011)₂ ရပါတယ်။
အပေါ်က Binary - Decimal နည်းကို Octal - Decimal နှင့် Hexadecimal - Decimal မှာ ယူသုံးလို့ရပါတယ်။ Base 2 အစား Octal အတွက်ဆို Base 8 နဲ့ Hexadecimal အတွက်ဆို Base 16 ဖြစ်သွားပါမယ်။ ခြွင်းချက်အနေနဲ့ ဘယ်တွက်နည်းပဲသုံးသုံး Hexadecimal မှာ အက္ခရာပါလာရင် ဂဏန်း ပြောင်းပေးရပါမယ်။ ဥပမာ - (5F)₁₆ ဆိုရင် F အစား 15 ကို အစားသွင်းပြီး တွက်ပေးရပါမယ်။ အစားသွင်းပေးရမဲ့ ဂဏန်းတွေနဲ့ အက္ခရာတွေက -
A = 10
B = 11
C = 12
D = 13
E = 14
F = 15
တို့ပဲ ဖြစ်ပါတယ်။ ဒုတိယနည်းကို Decimal - Octal နှင့် Decimal - Hexadecimal ကိုပြောင်းတဲ့အချိန်မှာ တိုက်ရိုက်ယူသုံးလို့ရပါတယ်။ အစားကိန်းကတော့ Binary အတွက် Base 2 အစား Octal အတွက်ဆို Base 8 နဲ့ Hexadecimal အတွက်ဆို Base 16 ပြောင်းသွားပါမယ်။ ခြွင်းချက်အနေနဲ့ Hexadecimal မှာပဲ ရှိပြီး အပေါ်ကအတိုင်း အက္ခရာနေရာမှာ ဂဏန်း အစားထိုးပေးရမှာပါ။
ဒါဆို ကျန်တာ ဆက်သွားပါမယ်။ ကျန်တာတွေထဲကမှ Binary - Octal နှင့် Binary - Hexadecimal ကို အရင်ပြောပါမယ်။ နှစ်ခုလုံးက ပထမတွက်နည်းအတိုင်းပါပဲ။ ဒါမဲ့ အဆင့် တစ်ဆင့်စီ ထပ်တိုးလာပါတယ်။
Binary - Octal ဆိုရင် (၃) လုံးတဖြတ် ဖြတ်ပါမယ်။ Binary - Hexadecimal ဆိုရင် (၄) လုံးတဖြတ် ဖြတ်ပါမယ်။ ပြီးရင် တဖြတ်စီကို ပထမတွက်နည်းအတိုင်းတွက်ပြီး နောက်ဆုံးရလာသမျှ အဖြေတွေကို တွဲရေးလိုက်ရုံပါပဲ။ နမူနာ အောက်မှာ (၂) ခု တွက်ပြထားပါတယ်။
Binary - Octal
(101101)₂ = (101)₂ , (101)₂
(101)₂
= (1 x 2²) + (0 x 2¹) + (1 x 2⁰)
= 4 + 0 + 1
= 5
နောက်တစ်တွဲကလဲ (101)₂ ပဲမို့ နှစ်ခါတော့ တွက်မပြတော့ပါဘူး။ နောက်ဆုံးရလာတဲ့အဖြေတွေကို တွဲလိုက််ရင် (55)₈ ဆိုပြီး ရပါတယ်။
Binary - Hexadecimal
(11010110)₂ = (1101)₂ , (0110)₂
(1101)₂
= (1 x 2³) + (1 x 2²) + (0 x 2¹) + (1 x 2⁰)
= 8 + 4 + 0 + 1
= 13 (D)
(0110)₂
= (0 x 2³) + (1 x 2²) + (1 x 2¹) + (0 x 2⁰)
= 0 + 4 + 2 + 0
= 6
နောက်ဆုံးရတဲ့အဖြေတွေကို တွဲရေးလိုက်ရင် (D6)₁₆ ဆိုပြီး ရပါမယ်။
ပြောင်းပြန် အနေနဲ့ Octal - Binary နှင့် Hexadecimal - Binary ကျ သဘောတရားချင်းတူပြီး ဒုတိယတွက်နည်းနဲ့ ပြောင်းတွက်ပါတယ်။ ဒီမှာကျ (၄) လုံးတွဲတွေ၊ (၃) လုံးတွဲတွေ ခွဲတာမျိုး မဟုတ်ပဲ တစ်လုံးချင်းစီကို ဒုတိယတွက်နည်းနဲ့ ခွဲတွက်ပြီး နောက်ဆုံးကျမှ ရသမျှ အဖြေတွေကို တွဲရေးတာပါ။ အစားကိန်းအနေနဲ့ နှစ်ခုလုံးသည် Binary ကို ပြောင်းမှာမို့ (၂) နဲ့ပဲ စားပေးရပါမယ်။ နမူနာအားဖြင့် အပေါ်က ပုဒ်စာတွေကိုပဲ ပြောင်းပြန် ပြန်တွက်ပေးထားပါတယ်။
Octal - Binary
(55)₈ = (5)₈, (5)₈
= 5 ÷ 2 = 2, အကြွင်း = 1
= 2 ÷ 2 = 1, အကြွင်း = 0
= 1 ÷ 2 = 0, အကြွင်း = 1
အကြွင်းကို ပြောင်းပြန် (အောက်ကနေ အပေါ်) ယူရင် (101)₂ ရပါတယ်။ နောက်ကျန်တဲ့ (5)₈ ကို တခါ ထပ်တွက်ပြီး ရတဲ့အဖြေကို တွဲရေးတော့ (101101)₂ ကိုပဲ ပြန်ရပါတယ်။
Hexadecimal - Binary
(D6)₁₆ = (D)₁₆ , (6)₁₆
= 13 (D) ÷ 2 = 6, အကြွင်း = 1
= 6 ÷ 2 = 3, အကြွင်း = 0
= 3 ÷ 2 = 1, အကြွင်း = 1
= 1 ÷ 2 = 0, အကြွင်း = 1
အကြွင်းကို ပြောင်းပြန် (အောက်ကနေ အပေါ်) ယူရင် (1101)₂ ရပါတယ်။
= 6 ÷ 2 = 3, အကြွင်း = 0
= 3 ÷ 2 = 1, အကြွင်း = 1
= 1 ÷ 2 = 0, အကြွင်း = 1
အကြွင်းကို ပြောင်းပြန် (အောက်ကနေ အပေါ်) ယူရင် (110)₂ ရပါတယ်။ ဒီနေရာမှာ ခြွင်းချက်အနေနဲ့ 4bits မပြည့်တဲ့အခါကျ ရှေ့ဆုံးမှာ သုည (0) တစ်လုံးဖြည့်ပေးရပါတယ်။ အဲ့ကျ အဖြေက (0110)₂ ဆိုပြီးရပါတယ်။ အဖြေ (၂) ခုကို တွဲရေးလိုက်ရင် (11010110)₂ ဆိုတဲ့အဖြေကို ပြန်ရပါတယ်။
နောက်ဆုံး Octal - Hexadecimal နှင့် Hexadecimal - Octal အပြန်အလှန်တွက်ဖို့ပဲ ကျန်ပါတယ်။ ဒီနေရာမှာကျ အပေါ်က သိပြီးသား တွက်နည်းတွေကို အဆင့်ခံပြီး တွက်ထုတ်လိုက်ရင် ရပါတယ်။ ဥပမာ -
Octal - Binary - Hexadecimal
Hexadecimal - Binary - Octal
ဆိုပြီး တွက်လို့လဲရသလို Binary နေရာမှာ Decimal ခံပြီးလဲ တွက်လို့ရပါတယ်။ အဖြေ အတူတူပါပဲ။ ဒီလောက်ဆို Computer Science ရဲ့ Classical Computing မှာ အခြေခံအနေနဲ့ Radix Conversion ကို ဘယ်လိုတွက်ထုတ်လဲဆိုတာ နားလည်လောက်ပြီ ထင်ပါတယ်။ Classical Computing မှာ Binary, Octal, Decimal, Hexadecimal ကိုတွက်တာမို့သာ (၄) မျိုးပဲ တွက်ရတာဖြစ်ပေမဲ့ တကယ့်တကယ် Radix Conversion က Mathematics ဖြစ်ပြီး ကြိုက်တဲ့ Base ကို ကြိုက်သလို ပြောင်းတွက်လို့ရတဲ့ တွက်နည်းတစ်ခုဖြစ်ပါတယ်။