ram ဆိုတာ ယာယီ မှတ်ဉာဏ် တစ်ခုပဲ cell လေးတွေ သန်းပေါင်းများစွာပါဝင်တယ်
cell တစ်ခု မှာ 1 Bit(0 or 1) ကို သိမ်းဆည်းနိုင်တယ် ဒါပေမယ့် CPU က ram ကို ကိုင်တွယ်တယ့် အခါ Bit ကို မကိုင်တွယ်ပါဘူး
ဘာလို့ ဆို number 1 ကို သိမ်းဖို့ဆိုရင်တောင် 1 Bit နဲ့ မလုံလောက်ပါဘူး
int 1 ဆိုရင် 32 bits လောက်နေရာ ယူပါတယ် C# မှာ long 1 လို့ သိမ်းခဲ့ရင် 8 bytes စာ နေရာယူပါတယ် javascript မှာ ဆိုရင် int ဆိုပြီး မခွဲတော့ ပဲ 8 bytes စာ နေရာယူပါတယ် ဒါကြောင့် Byte ကို ပဲ ကိုင်တွယ်ပါတယ် 8 bits(1 Byte) ကို Address တစ်ခု သတ်မှတ်ပါတယ်
program မှာ Array တစ်ခု တည်ဆောက်လိုက်တယ့် အခါ အဲ့ဒီ Array က ram မှာ လွှတ်နေ တယ့် cell အကွက်လေး မှာ သွားပြီး ကပ်လျက် ဒေတာ သိမ်းပါတယ်
[1,2,3,4] ဆိုပြီး array နဲ့ သိမ်းလိုက်တယ် ram ပေါ် မှာ လွှတ်နေ တယ့် address ကို သွားရှာမယ်
address 100 မှာ လွှတ်နေ တယ်ဆိုရင်
လွှတ်နေ တယ့် address 100 ကနေ စပြီး ဒေတာကို သိမ်းသွားမယ်
1 ဆိုတယ့် value ကို အရင် စပြီး သိမ်းမယ်
1 ဖြစ်တယ့် အတွက် bit နဲ့ မလုံလောက်ဘူး
လို အပ်တာ က 4 bytes စာနေရာလိုတယ်
1 byte မှာ address တစ်ခုသတ်မှတ်တာကြောင့် လိုအပ်တာက 4 bytes ဆိုတော့
address 4 ခု လိုမယ် လွှတ်နေတယ့် address က 100 အဲ့တော့
100,101,102,103 ဆိုတယ့် address မှာ 1 အတွက် နေရာယူမယ်
သိမ်းမယ့် value က 1, index က 0, address က 100 to 1003 cell အကွက်နဲ့ ဆိုရင် 32 ကွက်စာ နေရာ ယူသွားမယ် ဘာလို့ ဆို cell တစ်ကွက်မှာ 1 bit စာ ပဲ ရှိတယ် 8 bits ကို 1 Byte , 4 Bytes ဆိုတော့ 32 bits
1 ကို သက်ဆိုင်ရာ programming language က binary code အဖြစ် ပြောင်း 1 ရဲ့ binary code က 00000000 00000000 00000000 00000001 (စုစုပေါင်း 32 bits or cell အကွက် 32 ကွက်)
array ထဲက 1 ကို သိမ်းပြီးသွားပြီဆို တော့ 2 ကို ဆက်သိမ်းပါမယ် array နဲ့ ဒေတာ သိမ်းတာ ဖြစ်လို့ ကပ်လျပ်သိမ်းမှာပါ
index 0 = 1 ရဲ့ နောက်မှာ ဆက်ပြီးသိမ်းမှာ ဖြစ်လို့ 2 က address 104 ကနေ စပြီး 4 Byes စာနေ ရာ ယူမှာပါ
ဒါကြောင့် array ရဲ့ index ကို သိရင် ဒေတာ ရှာ ရတာ အရမ်းလွှယ်ပါတယ်
ဘာလို့ဆို index သိရင် address ကို သိလို့ပါ
index ကို သိရင် address ကို ဘယ်လို သိလဲ ဆိုရင် CPU က အောက်ပါ Formula ကို သုံးပြီး ရှာပါတယ်
Target Address = Start Address + (Index * Data Size)
ဒီမှာ data size and start address ကို ဘယ်လို သိလဲ ဆိုတာ ထပ်ရှင်းပါမယ်
data size ဆိုတာ က array ကို ဆောက်တုန်းက သတ်မှတ်ထားတယ့် data type အပေါ် မူတည် ပြီး ယူပါတယ်
C# and javascript ကို သုံးပြီး array ဆောက်ပြီး ရှင်းပြပါမယ်
C# code
byte[] levels = { 1, 5, 10, 20 };
byte လို့ ကြေညာ ထားတယ့် အတွက် data size က 1 byte ပါ
double[] prices = { 10.5, 20.0, 99.9 };
double လို့ ကြေညာထားတယ့် အတွက် data size က 8 bytes ပါ
string[] names = { "A", "Myanmar", "Hello World" };
string လို့ ကြေညာ ထားရင် data size က တူညီတော့ ပါဘူး
array မှာ သတ်မှတ်ထားတယ့် စည်းမျဥ်းရှိပါတယ် array ထဲမှာ သိမ်းထားတယ့် data အားလုံးရဲ့ data size က တူညီရမှာပါ
data size တူညီမှ Forumla ကို သုံးပြီး target address ကို ရှာနိုင်မှာ မို့လို့ပါ
string ဆိုရင် စာလုံး အရှည်အတို အပေါ် မူတည်ပြီး data size က ကွာခြားနိုင်ပါတယ်
string ဆိုရင် ဘယ်လို နေရာ ယူသွားလဲ ဆိုရင် data size ကို 8 bytes လို့ ပဲ default သတ်မှတ်ပြီး Reference Address ကို ပဲ သိမ်းပါတယ်
Reference Address ဆိုတာ Head Memory မှာ ရှိတယ့် Address ကို သွားပြီး ညွှန်တာပါ
programming language တွေက RAM ကို အပိုင်းတွေ ခွဲပြီး အသုံးပြု ပါတယ်
ဒီလောက်ဆိုရင်တော့ array တစ်ခု ram ပေါ် မှာ ဘယ်လို နေရာ ယူလဲ ဘာကြောင့် Array မှာ index သိရင် data ကို ဘာလို့ မြန်မြန် ယူ လို့ ရနေ လဲ ဆိုတာ သိလောက်ပြီ ထင်ပါတယ််
Top comments (0)