Classical Computing 1: Number System
Classical Computing ဆိုတာ ယနေ့ခေတ် ကျွန်တော်တို့တွေ အသုံးပြုနေတဲ့ Digital Computer တွေရဲ့ နောက်ကွယ်က အလုပ်လုပ်ပုံတွေကို လေ့လာတဲ့ ဘာသာရပ်ကို ခေါ်တာဖြစ်ပါတယ်။ အရင...
Classical Computing ဆိုတာ ယနေ့ခေတ် ကျွန်တော်တို့တွေ အသုံးပြုနေတဲ့ Digital Computer တွေရဲ့ နောက်ကွယ်က အလုပ်လုပ်ပုံတွေကို လေ့လာတဲ့ ဘာသာရပ်ကို ခေါ်တာဖြစ်ပါတယ်။ အရင်ကတော့ Fundamental Computing လို့လဲ ခေါ်ပါတယ်။ အခု ဘာလို့ Classical Computing လို့ ခေါ်တာလဲ ဆိုတော့ Quantum Computing ဆိုတဲ့ Quantum Computers အကြောင်းကို နောက်ပိုင်းမှာ ယှဉ်တွဲဖော်ပြချင်လို့ပါ။ ဘာလို့ Quantum Computing နဲ့ ယှဉ်တွဲဖော်ပြချင်လဲ ဆိုတော့ Quantum Computing ဟာ နောင်တစ်ချိန် AI ခေတ်မှာ ရှေ့ဆုံးက တစ်ပြေးမဲ့ နည်းပညာ ဖြစ်လာမယ်လို့ ခန့်မှန်းမိနေလို့ပါ။ ဒါပေမဲ့ Quantum Computing ကို လေ့လာမယ်ဆိုရင် Classical Computing ဟာ မသိမဖြစ် သိကို သိရမဲ့ အခြေခံပါပဲ။

States
ကျွန်တော်တို့ state ကို အရင် လေ့လာကြည့်ပါမယ်။ ဒင်္ဂါးပြား တစ်ခုနဲ့ စကြည့်ရအောင်ပါ။ ဒင်္ဂါးပြားမှာ ခေါင်းနှင့်ပန်း ဆိုပြီး မျက်နှာ နှစ်ဖက်ပါ ပါတယ်။ အဲ့တော့ ဒင်္ဂါးပြား တစ်ခုကို လှန်လိုက်မယ်ဆိုရင် အဖြေဟာ ခေါင်း (သို့မဟုတ်) ပန်း ကျပါမယ်။ ခေါင်းကို (H)၊ ပန်းကို (T) ဆိုပြီး ကျွန်တော်တို့ သက်မှတ်ကြည့်မယ်ဆိုရင် Probability အရ -
{H, T}
ဆိုပြီး ရပါမယ်။ ဒါက ဒင်္ဂါးပြား တစ်ခုပဲ ရှိပါသေးတယ်။ အကယ်၍ ဒင်္ဂါးပြား နှစ်ပြားဆိုရင် Probability အရ အဖြေ (၄) မျိုး ရပါမယ်။
{HH, HT, TH, TT}
ဆိုပြီး ရပါမယ်။ ဒင်္ဂါးပြား သုံးပြားဆိုရင် Probability အရ အဖြေ (၈) မျိုး ရပါမယ်။
{HHH, HHT, HTH, HTT, THH, THT, TTH, TTT}
ဆိုပြီး ရပါမယ်။ ဒင်္ဂါးပြား လေးပြားဆိုရင် အဖြေ (၁၆) မျိုး ရပါမယ်။ ငါးပြားဆိုရင် အဖြေ (၃၂) မျိုး ရပါမယ်။ ဒီမှာ လေ့လာကြည့်ရင် ဒင်္ဂါးပြား အရေအတွက် အပေါ်မူတည်ပြီး ရရှိလာမဲ့ အဖြေဟာ ဆတိုးဖြစ်သွားတာကို တွေ့ရမှာပါ။ ဘယ်လောက် ဆတိုးသွားတာလဲဆိုတော့ (၂) ပေါ်ထပ်ညွှန်းကိန်းနဲ့ ဆတိုးသွားတာပါ။ ဘာလို့ (၂) ပေါ်ထပ်ညွှန်းကိန်းနဲ့ ဆတိုးသွားလဲဆိုတော့ ဒင်္ဂါးပြားမှာ state (၂) မျိုးပဲ ရှိလို့ပါ။ အဲ့တော့ formula အရ ($2^{n}$) ဖြစ်ပါမယ်။ ဒင်္ဂါးပြား ဘယ်နှစ်ခုမှာ အဖြေ ဘယ်နှမျိုး ရနိုင််မလဲ ဆိုတာကို သိချင်ရင် (n) နေရာမှာ ဒင်္ဂါးပြား အရေအတွက်ကို အစားသွင်းပြီး တွက်လိုက်ရုံပါပဲ။ ဒီတစ်ခါ ကျွန်တော်တို့ အံစာတုံးနဲ့ သွားကြည့်ပါမယ်။ အံစာတုံးမှာ မျက်နှာ (၆) ဖက်ပါ ပါတယ်။ ဒါကြောင့်မို့ အံစာတစ်တုံးဆိုရင် အဖြေ (၆) မျိုးထွက်ပါမယ်။
{1, 2, 3, 4, 5, 6}
အံစာ (၂) တုံးဆိုရင် (၃၆) မျိုး ထွက်ပါမယ်။ (၃) တုံးဆိုရင် (၂၁၆) မျိုး ထွက်ပါမယ်။ ဒီတစ်ခါ (၆) ပေါ်ထပ်ညွှန်းကိန်းနဲ့ ဆတိုးသွားမှာပါ။ ဘာလို့ဆို အံစာတုံးမှာ မျက်နှာ (၆) ဖက်ရှိလို့ပါ။ Formula အရဆို ($6^{n}$) ဆိုပြီး ဖြစ်ပါမယ်။ ဒီလောက်ဆို state အကြောင်း နားလည်မယ်လို့ ထင်ပါတယ်။
Binary
ကျွန်တော်တို့ လက်တွေ့ အပြင်ကမ္ဘာမှာ အရာအားလုံံးနီးပါးဟာ binary တွေဖြစ်ပါတယ်။ binary ဆိုတာက state နှစ်ခုပဲ ရှိတဲ့ အခြေအနေပါ။ ဥပမာ - မီးခလုတ် ဖွင့်မယ်၊ ပိတ်မယ်။ တံခါးပိတ်မယ်၊ ဖွင့်မယ်။ ဒါမျိုး အခြေအနေကို Digital Computer မှာ Transistor ဖွင့်မယ်၊ ပိတ်မယ်ဆိုတဲ့ အနေအထားနဲ့ အသုံးပြုလိုက်တဲ့အခါမှာ Classical Computing မှာ Binary Digit ဆိုတဲ့ အနေအထားတစ်ခု ပေါ်လာပါတယ်။ အတိုခေါက် (bit) ဆိုပြီး ခေါ်ပါတယ်။ Digital Computer တွေအားလုံးဟာ နောက်ကွယ်မှာ Bit အနေနဲ့ ပဲ အလုပ်လုပ်ပါတယ်။ Bit မှာ {0, 1} ဆိုတဲ့ state (၂) ခုပဲ ရှိပါတယ်။ ဒင်္ဂါးနဲ့ သဘောတရား ဆင်တူပါတယ်။ ဒါကြောင့်မို့ Bit အပေါ်မူတည်ပြီး တွက်ထုတ်တဲ့အခါ အခြေခံအားဖြင့် ($2^{n}$) formula ကိုပဲ သုံးပါတယ်။ ဒင်္ဂါးဥပမာနဲ့ အစားထိုးရမယ်ဆိုရင် ခုနက {H, T} တွေမှာ {0, 1} ကို အစားထိုးလိုက်ရုံပါပဲ။ ဒင်္ဂါးတစ်ပြားဆို 1bit, ဒင်္ဂါး နှစ်ပြား ဆို 2bit ဒါမျိုးတွေ ဖြစ်သွားပါမယ်။
1bit = 0, 1
2bits = 00, 01, 10, 11
3bits = 000, 001, 010, 011, 100, 101, 110, 111
01, 001 တွေကို ဖတ်တဲ့အခါ သူတို့တွေကို တစ်လုံးချင်းစီ ဖတ်ပါမယ်။ ဥပမာ - (01) zero-one, (001) zero-zero-one ဆိုပြီး ဖတ်ရပါမယ်။ 1000 ဆိုရင် တစ်ထောင်လို့ မဖတ်ပဲ one-zero-zero-zero ဆိုပြီး ဖတ်ရပါမယ်။ ဘာလို့လဲ ဆိုတော့ သူတို့က decimal (base 10) တွေ မဟုတ်ပဲ binary (base 2) တွေ ဖြစ်နေလို့ပါ။ ဒါကြောင့်မို့လဲ 0 နှင့် 1 (၂) ခုပဲ ရှိနေရတာပါ။
Decimal
Binary အကြောင်းကို ကျွန်တော်တို့ လေ့လာကြည့်ပြီးပြီဆိုတော့ ကျွန်တော်တို့နဲ့ ရင်းနှီးပြီးသား decimal (base 10) အကြောင်းကို နည်းနည်း လေ့လာကြည့်ကြပါမယ်။ နေ့စဉ် နိစ္စဓူဝမှာ သုံးနေကြတဲ့ decimal ရေတွက်မှုကို ကျွန်တော်တို့ ငယ်စဉ် လူမှန်းသိတတ်စထဲက ရင်းနှီးလာခဲ့ပါတယ်။ လက်နှစ်ဖက် လက်ချောင်း ဆယ်ချောင်းကို တစ်၊ နှစ်၊ သုံး၊ လေး စသည်ဖြင့် ရေတွက်လာခဲ့တာပါ။ ဒီ decimal ကို သုညက စရေတွက်ရင် ကိုး (9) ဂဏန်းမှာ ဆုံးပါတယ်။ တစ်ဆယ် ဆိုတာဟာလဲ (10 + 0) ဖြစ်သလို တနည်းအားဖြင့် (10) ဆိုတဲ့ ဂဏန်းမှာ (1) နှင့် (0) ကို ကပ်လျက် အနေအထားနဲ့ ပြန်သုံးထားတာကြောင့် ၁၀ ဆိုတဲ့ ဂဏန်း အက္ခရာဟာ ကျွန်တော်တို့ လက်တွေ့ကမ္ဘာမှာ (0) ကနေ (9) အထိ ဂဏန်းလို unique number တစ်လုံးမဟုတ်ပါဘူး။ decimal မှာ (0) ကနေ (9) အထိပဲ ရှိပါတယ်။ Dimension တွေနဲ့ အနည်းငယ် အလားသဏ္ဍာန် ဆင်တူပါတယ်။
ဒီသဘောတရားအတိုင်းကို Binary မှာ ပြန်ကြည့်ရင် (0) နှင့် (1) နှစ်လုံးပဲ ရှိတယ်လို့ နားလည်ရပါမယ်။ Decimal မှာ (9) ပြီးရင် တစ်ဆယ်ကို (10) ဆိုပြီး (0) နှင့် (1) ကို ပြန်ယူသုံးသလို Binary မှာလဲ Base 2 ဖြစ်တဲ့ အတွက် (0) နှင့် (1) ပြီးရင် (10) ပြန်လာပါတယ်။ ပြီးရင် (11, 100) ဆိုပြီး ဆက်ရေတွက်သွားပါတယ်။ Binary Digit (Base 2) မှာ (3) ကနေ (9) အထိိ ဂဏန်းတွေ မရှိဘူးလို့ သက်မှတ်ရမှာပါ။ ဒါဆိုရင် Decimal နဲ့ ယှဉ်ပြီး Binary ရဲ့ ရေတွက်ပုံကိုလဲ နားလည်မယ် ထင်ပါတယ်။
Octal
Octal ဆိုတာကတော့ Base 8 Digits တွေ ဖြစ်ပါတယ်။ ဂဏန်း အနေနဲ့ဆိုရင် သုည (0) ကနေ (7) အထိပဲ ရှိပြီး (8) နှင့် (9) ဟာ Octal Number မှာ မပါဝင်ပါဘူး။ ဒါကြောင့်မို့ ရေတွက်တဲ့ အခါ (7) ပြီးရင် (10) လာရပါတယ်။ (17) ပြီးရင် (20) လာရပါတယ်။ နမူနာ ကိန်းစဉ်တန်း အားဖြင့် အောက်မှာ ကြည့်နိုင်ပါတယ်။
0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, ..., 17, 20, 21, 22, ..., 30, 31, ...
Hexadecimal
Hexadecimal ဆိုတာကတော့ Base 16 Digits တွေ ဖြစ်ပါတယ်။ စုစုပေါင်း ဂဏန်း အက္ခရာ (16) လုံးအထိ ရှိပါတယ်။ ကျွန်တော်တို့ နေ့စဉ်ဘဝမှာ အသုံးပြုနေကြတဲ့ Decimal Number System ထက် ဂဏန်း (6) လုံးပိုပါတယ်။ ဒါကြောင့်မို့ ကျွန်တော်တို့ သိထားပြီးသား ဂဏန်း အက္ခရာ (1) ကနေ (9) အထိ အပြင် ပိုနေတဲ့ ဂဏန်း (6) လုံးနေရာမှာ (A, B, C, D, E, F) ဆိုပြီး အင်္ဂလိပ်ဗျည်း အက္ခရာ (6) လုံးကို ယူသုံးပါတယ်။ ဒါကြောင့်မို့ Hexadecimal Number System မှာ (9) ပြီးရင် (A, B, C, D, E, F) ကပ်လိုက်ပါတယ်။ ပြီးမှ (10) လာပါတယ်။ နမူနာ ကိန်းစဉ်တန်းကို အောက်မှာ လေ့လာနိုင်ပါတယ်။
1, 2, ..., 9, A, B, C, D, E, F, 10, 11, ..., 19, 1A, 1B, 1C, 1D, 1E, 1F, ..., 20
မှတ်ချက်အားဖြင့် Binary ကို စက်က နားလည်နိုင်သောဘာသာစကား Machine Language အနေနဲ့လဲ ခေါ်ကြပါတယ်။ Decimal ကတော့ လူသားတွေ နားလည်နိုင်သော နေ့စဉ်သုံး ဘာသာစကား Human Language အနေနဲ့ မှတ်ယူနိုင်ပါတယ်။ တနည်းအားဖြင့် Standard Number တွေလဲ ဖြစ်ပါတယ်။ ကျွန်တော်တို့ လူသားတွေ အနေနဲ့ စက်ကို ခိုင်းမယ်ဆိုရင် Decimal Number ကနေ Binary Number အဖြစ် ပြန်ပြောင်း ခိုင်းရမှာပါ။ တကယ်လဲ နောက်ကွယ်မှာ အဲ့လိုပြောင်းပြီး ခိုင်းရပါတယ်။ ကြားထဲက Octal နဲ့ Hexadecimal တွေကတော့ Binary Number တွေ တအားရှည်လာတဲ့အခါမှာ လူတွေ interpret လုပ်နိုင်အောင် Binary Digits ကိုပြန်ပြောင်း ချုံ့ပေးတဲ့ ကိုယ်စားပြု Number System တွေ ဖြစ်ပါတယ်။ အဲ့ထဲမှာမှ Hexadecimal ကို Programming Language တွေမှာ အသုံးများပါတယ်။