Reading Time: 6 minutes

ආයුබෝවන්…Computer System යටතේ මම කලින් ලිපියෙන් අපේ මේ වැඩසටහන ගැන පොඩි හැඳින්වීමක් වගේම මූලික දේවල් පොඩ්ඩක් කතා කලා. ඒක බලන්න බැරි උනානම් ඔයාට මෙතනින් ගිහින් ඒ ලිපිය බලන්න පුලුවන්. හොඳයි එහෙනම් අපි දැන් අද පාඩමට යමු. අද අපි කතා කරන්න යන්නේ Numbering System ගැන.

Numbering System ගැන කතා කරද්දි අපි ප්‍රධානවම Numbering System 4ක් ගැන කතා කරනවා.

1) Binary System > Alphabet = {0,1}
2) Decimal System > Alphabet = {0,1,2,3,4,5,6,7,8,9}
3) Octal System > Alphabet = {0,1,2,3,4,5,6,7}
4) Hexadecimal System > Alphabet = {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}

දැන් අපි බලමු දශමය(Decimal) සංඛ්‍යාවක් ද්වීමය(Binary) සංඛ්‍යාවකට හරවන්නේ කොහොමද කියලා.

මේ උදාහරණෙන් අපි 25 කියන දශමය සංඛ්‍යාව ද්වීමය සංඛ්‍යාවක් බවට පත්කරලා තියෙන්නේ. ඇත්තටම මේකෙදි නම් කරන්න දෙයක් ඇත්තෙම නැති තරම්. මොකක්ද අපි කරලා තියෙන්නේ, 25 කියන සංඛ්‍යාව 2න් බෙදාගෙන ගිහින් තියෙනවා 0 වෙනකන්ම. එහෙම බෙදාගෙන යද්දි ඉතුරු වෙන අගය ඉස්සරහින් ලියනවා. අන්තිමටම කරන්නේ යට ඉඳන් උඩට ඒ ඉතිරි අගයන් ටික ලියාගෙන යන එක. හරිම සරලයි. දෙකේ පාදයට විතරක් නෙවෙයි, දශමය සංඛ්‍යාවක් ඕනම පාදයකට හරවන්න ඕනනම් කරන්න තියෙන්නේ ඒ අවශ්‍ය පාදයෙන් දශමය සංඛ්‍යාව 0 වෙනකන්ම බෙදගෙන යන එක. එතකොට කලින් උදාහරණෙදි වගේම ඉතුරු වෙන අගයන්ගෙන් අපිට අවශය පිලිතුර ලැබෙනවා.

දැන් අපි බලමු ද්වීමය(Binary) සංඛ්‍යාවක් දශමය(Decimal) සංඛ්‍යාවක් බවට පත්කරන්නෙ කොහොමද කියලා. අපි ඒක උදාහරණයකින්ම බලමුකෝ…

හොඳයි එහෙනම් මං හිතනවා කාටත් මේ කරපු දේ තේරෙන්න ඇති කියලා. අපැහැදිලි තැනක් තියෙනවනම් කරුණාකරලා පහලින් Comment කරන්න. දැන් අපි යමු 16 පාදයට.

Hexadecimal Notation

දැන් අපි බලමු ද්වීමය(Binary) සංඛ්‍යාවක් ෂඩ්දශමය(Hexadecimal) සංඛ්‍යාවකට හරවන්නේ කොහොමද කියලා.

මෙතනදි කරන්න තියෙන්නෙ අපේ ද්වීමය සංඛ්‍යාව දකුණු පැත්තෙ ඉඳන් ඉලක්කම් 4න් 4ට වෙන් කරගෙන එන එක. ඊට පස්සෙ කරන්න තියෙන්නෙ උදාහරණෙ විදියට ඒ ඒ කොටස් වලට අදාළ දශමය සංඛ්‍යාව ලියන එක. මෙතනදි අපි 10 ඉඳන් 15 දක්වා ඉලක්කම් වෙනුවට පාවිච්චි කරන්නෙ A වල ඉඳන් F දක්වා ඉංග්‍රීසි අකුරු. ඒකට හේතුව මොකක්ද කියලත් ඔයාලට දැන් තේරෙනවා ඇති. 16 පාදයෙන් තියෙන සංඛ්‍යාවක් ද්වීමය සංඛ්‍යාවකට හරවන්නෙ කොහොමද කියල ඉතින් අමුතුවෙන් කියන්න දේකුත් නෑ. උඩ තියෙන උදාහරණ දෙක අග ඉඳන් මුලට බැලුවනම් මොකක්ද වෙන්නෙ කියලා තේරෙනවනෙ. ඒක නිසා මම ඒ ගැන කියන්න යන්නෙ නෑ. ෂඩ්දශමය සංඛ්‍යාවක් දශමය සංඛ්‍යාවකට පරිවර්තනය කරද්දි කරන්නෙත් කලින් දෙකේ පාදෙ දි කරපු වැඩේම තමයි.වෙනස තියෙන්නෙ පාදයට 2 වෙනුවට 16 පාවිච්චි කරන එක.

අෂ්ටමය සංඛ්‍යා පද්ධතිය ගැන මම මෙතනදි කතා කරන්න යන්නෙ නැහැ. ඇත්තටම එතන වෙන්නෙත් මේ විදියටම තමයි. වෙනස වෙන්නෙ 16 පාදයෙ සංඛ්‍යාවක් ලියද්දි bit 4ක් යොදා ගනිපු එක 8 පාදෙ දි bit 3කින් ලියන එක. අර දකුණු පැත්තෙ ඉඳන් bit 4න් 4ට කඩපු එක මෙතනදි කඩන්නෙ bit 3න් 3ට.
හරි. තව පොඩි දෙයක් ගැන කියන්න තියෙනවා Numbering System ගැන කතා කරද්දි. එහෙනම් අපි දැන් බලමු ද්වීමය සංඛ්‍යා එක්ක කොහොමද මූලික ගණිත කර්ම ටික කරන්නෙ කියලා.

Binary Addition

Binary Subtraction

Binary Multiplication

Binary Division

හරි. මේ වෙනකන් අපි කතා කරේ බොහොම සරල දේවල් ටිකක් නේ…දැන් අපි පොඩ්ඩක් වෙනස් තැනකට යමු…

Representing Numbers

Numbers Represent කරන්න වෙනස් විධියේ ක්‍රම 3ක් තියෙනවා.

1. Unsigned representation : for non-negative integers
2. Signed representation : for negative integers
3. Floating-point representation : for fractions

1) Unsigned Binary Numbers (8 – bit)

මොනවද මේ Unsigned Binary Numbers කියන්නේ ? ඒක මම මෙහෙම කියන්නම්කො..
>  යොදා ගන්නෙ 0යි 1යි. ඒකනම් ඉතින් කොහොමත් දන්නවනෙ.
>  මේ ක්‍රමෙන් store කරන්න පුලුවන් Positive Numbers විතරයි.
>  Represent කරන්න පුලුවන් කුඩාම binary number එක 0 (= 00000000).
>  Represent කරන්න පුලුවන් විශාලම binary number එක 255 (= 11111111).
>  Represent කරන්න පුලුවන් range එක 0 – 255.
දැන් බලමු Signed Binary Numbers කියන්නෙ මොනවද කියලා…

2) Signed Binary Numbers (8 – bit)

>  යොදා ගන්නෙ 0යි 1යි.
>  මෙතනදි වම් පත්තෙ කොනේම තියෙන bit එක හඳුන්වන්නෙ sign bit එක කියලා. ( 0 for positive , 1 for negative ).
>  Represent කරන්න පුලුවන් කුඩාම positive binary number එක 0 (= 00000000).
>  Represent කරන්න පුලුවන් විශාලම positive binary number එක 127(= 01111111).
>  Represent කරන්න පුලුවන් positive numbers range එක 0 – 127.
හරි. හැබැයි මේ ක්‍රමේදි පොඩි ප්‍රශ්න 2ක් තියෙනවා. එකක් තමයි ක්‍රම 2කට 0 represent කරන්න පුලුවන් වීම.(+0 = 00000000 , -0 = 10000000). අනිත් එක අපි උදාහරණෙකින්ම බලමු.

ඒ කියන්නෙ 5න් 3ක් අඩු කරාම උත්තරේ විදියට -8ක් ඇවිත් තියෙනවා. එහෙනම් ඔයාලට තේරෙනවා මෙතන ප්‍රශ්නයක් තියෙනව කියලා.මේ ගැටලු මගහැරගන්නත් ක්‍රමයක් තියෙනවා. දැන් අපි බලමු ඒ මොකක්ද කියලා.

Two’s Complement

අපිට ප්‍රශ්නෙ ආවෙ negative numbers represent කරන්න ගියාමනේ. මේ ක්‍රමෙන් අපි කරන්නෙ ,
>  අපිට ඕන negative number එකේ positive number එක signed ක්‍රමයට ලියනවා.
>  දකුණෙ ඉඳන් වමට bit pattern එක copy කරගෙන යනවා පලවෙනි “1” හමුවෙනකන්.
>  එතනින් පස්සෙ එන සෑම bit එකක්ම තියෙන අගයෙන් අනිත් අගයට හරවනවා.(-128 = 10000000 හැර).
මෙහෙම කිව්වට එච්චර තේරෙන එකක් නෑනේ. අපි ඒක උදාහරණෙකුත් එක්ක බලමු.

හිතන්නකො අපිට ඕන -3 binary වලින් ලියන්න. දැන් එහෙනම් ඉස්සෙල්ලම කරන්නෙ +3 signed binary වලින් ලියාගන්නවා.


දැන් පලවෙනි “1” හමුවෙනකන් දකුණෙ ඉඳන් වමට bit pattern එක copy කරනවා.


දැන් කරන්නේ එතනින් පස්සෙ එන ඔක්කොම ඉලක්කම් ටික මාරු කරනවා. ඒ කියන්නෙ 0 තියෙන තැනට 1ත්, 1 තියෙන තැනට 0ත් ලියනවා.

මේ අන්තිමට ඇවිත් තියෙන binary අගය සමාන වෙන්නෙ -3ට. හරි, ඔන්න එහෙනම් අපි Two’s Complement ගැනත් කතා කරා. එහෙනම් Two’s Complement වලදි represent කරන්න පුලුවන් කුඩාම අගය වෙන්නෙ -128. විශාලම අගය වෙන්නෙ +127. ඒ වගේම මේ ක්‍රමේදි අපිට 0 ඒවා 2ක් එන්නෙත් නෑ.
හරි, දැන් අපිට තියෙන්නෙ Floating-point representation ගැන කතා කරන්න.

3) Floating-point representation (Fractions)
♦  Fractions in Binary

අපි මේකත් උදාහරණයකින්ම බලමු.

හරි. උදාහරණෙ කාටත් තේරෙන්න ඇති කියලා හිතනවා. දැන් බලමු Floating Point Numbers වල Format එක මොන වගේද කියලා.

Floating Point Format in 1 Byte

දැන් අපි මේ format එකට number එකක් store කරල බලමු.

 

උදාහරණෙ බැලුවට මේක නම් එච්චර තේරෙන එකක් නෑ. ඒක නිසා මේ උත්තර ආවෙ කොහොමද කියලත් පොඩ්ඩක් බලමු.
sign bit එකට 0 දාපු එක ප්‍රශ්නයක් නෑනෙ. ධන සංඛ්‍යාවක් නිසා 0 දැම්මා. ඊලඟට mantissa bits ඇවිත් තියෙන්නෙ දශම තිතෙන් පස්සෙ තියෙන ඉලක්කම් ටිකෙන්. මෙතනදි හොඳට මතක තියාගන්න අපි දශම තිත තියෙන තැන ගන්නෙ විද්‍යාත්මක අංකන ක්‍රමයෙන්. හැමෝම විද්‍යාත්මක අංකන ක්‍රමය ගැන අහලා ඇතිනෙ. හරි මං උදාහරණෙකුත් පෙන්නන්නම්.

හරි. step 3 වල තියෙන exponent bits වලට 011 ඇවිත් තියෙනවා. ඒක ඇවිත් තියෙන්නෙ k වල අගයයි 2 ඉලක්කමට ඇවිත් තියෙන බලයයි එකතු වෙලා. මේ උදාහරණෙදි නම් ද්වීමය සංඛ්‍යාව අපිට අවශ්‍ය විදියටම තියෙනවා.ඒක නිසා අමුතුවෙන් විද්‍යාත්මක අංකන ක්‍රමයට හරවන්න දෙයක් නෑ. ඒක නිසා තමයි 2ට 0 බලයක් ඇවිත් තියෙන්නෙ. හරි දැන් නම් තේරෙනවා ඇති. අපි තව උදාහරණයක් බලමු.


හරි. දැන් අපි බලමු මේ විදියට(Floating Point Binary) තියෙන number එකක් Decimal වලට හරවන්නෙ කොහොමද කියලා.


කලින් කරපු දේම අග ඉඳන් මුලට යනවා වගේ වැඩක් තියෙන්නේ.
හරි. ඔන්න එහෙනම් අපි Numbering System ගැනත් කතා කරා. තේරෙන්නෙ නැති තැනක් තියෙනවනම් පහලින් comment කරන්න. ඒ වගේම අපේ මේ වැඩසටහන ගැන ඔයාලගෙ අදහසත් පහලින් comment කරන්න කියලා මතක් කරනවා. එහෙනම් තවත් ලිපියකින් හමුවෙනතුරු සමුගන්නම්. ස්තූතියි.


Shehan Rangana

I am an undergraduate student of studying Computer Science.

Leave a Reply

Your email address will not be published. Required fields are marked *