මොකක්ද මේ ASCII (American Standard Code for Information interchange) කියන්නේ?
හිතන්නකෝ, ඔයා Word document එකක open කරලා keyboard එකේ මොකක් හරි type කරනවා කියලා . එහෙම ඔයා keyboard එකේ type කරපු letters ඔයාට දැන් screen එකේ පේනවා. කොහොමද එහෙම උනේ? අපි type කරන දේවල් PC එකට තේරෙනවද? අද අපි ඒ ගැන කතා කරමු.
අපි keyboard එකෙන් එක එක අකුරු type කරාට ඇත්තටම PC එකට Lap එකට මේවා තේරුම් ගන්න බෑ. ඇත්තටම PC එකට Lap එකට තේරුම් ගන්න පුලුවන් 1, 0 කියන binary values විතරයි.
දැන් ඔයා හිතනවා ඇති මොනවද මේ binary values කියලා. හරි හිතන්නකෝ ඔයාගේ PC එක Lap එක charge වෙන්න දැම්මා කියලා. එතකොට ඔයාගේ PC එක, Lap එක කොහොමද current එක එනවා කියලා තේරුම් ගන්නේ? PC එකට Lap එකට current එක එනවා කියලා තේරුම් ගන්න පුලුවන් signals වලින්. ඒ කියන්නේ current එක එනවා නම් 1 , current එක එන්නේ නැත්නම් 0.
මෙන්න මේ විදියට 1 සහ 0 වලින් signals එන එකට තමයි binary values කියලා කියන්නේ. ඉතිං අපි keyboard එකේ මොනවා හරි type කරාමත් අපේ Lap එක PC එක මේවා තේරුම් ගන්නේ මේ වගේ binary signals විදියට. ඒක නිසා මිනිස්සු මේ විදියට type කරන දේවල් PC එකට Lap එකට තේරුම් ගන්න පුලුවන් වෙන්න සම්මත කේත ක්රම මිනිස්සු අතරේ famous උනා. දැන් අපි ඒ මොනවද කියලා බලමු.
1. BCD – Binary Coded Decimal
2. ASCII – American Standards Code for Information Interchange
3. EBCDIC – Extended Binary Coded Decimal Interchange Code
4. Unicode
BCD – Binary Coded Decimal
BCD එහෙම නැත්නම් Binary Coded Decimal කියන්නේ computer use කරන්න ගත්ත මුල් කාලේ use කරපු කේත ක්රමයක් කිව්වොත් හරියටම හරි. BCD කේත ක්රමය use කරලා අපට 0 – 9 වෙනකල් තියෙන numbers, bits 4 කින් මේ විදියට represent කරන්න පුලුවන්. (24 = 16)
ASCII – American Standards Code for Information Interchange
මේක තමයි අද අපි කතා කරන main topic එක. අපි කලින් කතා කරේ BCD එහෙම නැත්නම් Binary Coded Decimal ගැන නේ. ඒකේ 0 – 9 වෙනකල් numbers represent කරන්න පුලුවන් කියලා අපි කතා කරානේ. ඉතිං එතකොට කොහොමද text represent කරන්නේ? ඒකට විසදුමක් විදියට තමයි ASCII කියන කේත ක්රමය නිර්මාණය උනේ.
ASCII කේත ක්රමය 1963 වර්ශයේදී ANSI (American National Standard Institute) කියන ආයතනය තමයිනිර්මාණය කරේ. ඒ වගේම තමයි ASCII වල bits 7 ක් තියෙන නිසා characters 128 ක් represent කරන්න පුලුවන්. ( 27 = 128) ඒ නිසාම ASCII method එක use කරලා A – Z වෙනකල් තියෙන capital letters , simple letters , 0 – 9 වෙනකල් තියෙන numbers සහ විරාම ලකුණු represent කරන්න chance එක් ලැබිලා තියෙනවා.
දැන් අපි ASCII characters වල binary, decimal, octal, hexadecimal digits represent වෙන විදිය බලමු.
Hexadecimal
PC එකට lap එකට තේරෙන්නේ binary values. හැබැයි මිනිස්සුන්ට ඒවා තේරුම් ගන්න බෑ. ඒකට විසදුමක් විදියට hexadecimal number system එක ලෝකේ use වෙනවා. Hexadecimal කියන්නේ 16 පාදයේ කියන එක. ඒ කියන්නේ hexadecimal වල 0 – 9 වෙනකල් numbers represent වෙනවා 10 – 15 වෙන්නකල් A – F values represent වෙනවා.
Decimal Number | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
Hexadecimal Number | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
Number System | Hexadecimal Number System |
Base | 16 |
Digital Use | 0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F |
(Example එකක් විදියට m කියන අගයේ hexadecimal value එක 0×6D)
Octal
0, 1, 2, 3, 4, 5, 6, 7 කියන numbers represent කරන්න තමයි 8 පාදයේ එහෙම නැත්නම් Octal Number Systems use කරන්නේ.
Number System | Decimal Number System |
Base | 10 |
Digital Use | 0,1,2,3,4,5,6,7,8,9 |
(Example එකක් විදියට m කියන අගයේ decimal value එක 109)
Binary
Binary කිව්වම ඔයාලා දන්නවනේ දෙකේ පාදයේ numbers කියලා. ඒ කියන්නේ 1 සහ 0. මේකෙදී සමහර අවස්තාවල bit 7 ක් use කරනවා සමහර අවස්තාවල bit 8 ක් use කරනවා.
Example – m කියන අගය binary value එකක bit 8 කින් represent කරාම අපට මේ වගේ value එකක් තමයි එන්නේ 0110 1101.
ඒකම bit 7 කින් represent කරාම 110 1101 කිය්න value එක අපට හම්බු වෙනවා. දැන් ඔයාලා බලනවා ඇතිනේද bit 7 සහ bit 8 කියලා අගයන දෙකක් ගත්තම m කියන letter එකට binary values දෙකක තියෙනවද කියලා. ඒකේ එහෙම ලොකු වෙනසක් නැහැ. මොකද m කියන letter එකේ 7 bits වලින් ගත්තත් 8 bit වලින් ගත්තත් values දෙකම සමානයි. 8-bit වලින් represent කරන්න ඕනි නිසා ඒකේ මුලට 0 එකක extra add වෙලා තියෙනවා.ASCII වලට අනුව m letter එක binary, decimal, octal, hexadecimal digits වලින් represent වෙන්නේ මෙහෙමයි.
Character | Hexadecimal | Octal | Decimal | Binary (7bit) | Binary (8 bit) |
m | 0×6D | 155 | 109 | 110 1101 | 0110 1101 |
ඇයි ASCII මෙච්චර import?
ASCII කියන්නේ character encoding වලට ගොඩක් famous method එකක් කියලා ඔයාලට දැන් තේරෙනවනේ. ASCII කියන encoding method එක නිසා තමයි අපට Lap එකේ PC එකේ text typing කරන්න පුලුවන් වෙලා තියෙන්නේ.
ඒකේ result එකෙක් විදියට 1969 IEFT (The internet Engineering Task Force) එක ASCII method එක RFC 20 කියලා public කරලා තියෙනවා. ඒ විතරක් නෙවෙයි 2015 දී RFC document එක standard method එකක් විදියට ASCII, accept කරලත් තියෙනවා.
ASCII method එක mainly කොටස් 4 කට බෙදෙනවා ඒ කියන්නේ UTF – 7, UTF – 8, UTF – 16, UTF 32 විදියට (UTF – Unicode transformation Format). මේ වෙද්දී ලෝකයේ English typing වලට අමතරව Sinhala, Hindi, Tamil වගේ languages type කරනවා. මේ extra languages වලට base එක ඇවිල්ලා තියෙන්නේ ASCII method එක නිසා.
ලෝකයේ PC එකක් lap එකක් developed වෙන්කොට ඒක developed කරන්නේ ASCII method එක use කරලා. ඒ කියන්නේ English type කරන්න පුලුවන් විදියට. ඊට අමතරව දැන් ගොඩක් අය අනිත් languages type කරන නිසා ASCII method එක දියුණු කරලා Unicode කියන coding system එක ලෝකෙට introduce කරලා දීලා තියෙනවා.
දැන් අපි බලමු කොහොමද ASCII වැඩ කරන්නේ කියලා
ඔයාලට දැන් තේරෙනවා ඇතිනේ ASCII කියන්නේ ගොඩක් important coding method එකක් කියලා. මොකද ASCII නිසා අපට ලේසියෙන්ම text typing හැකියාව ලැබිලා තියෙනවා. ASCII method එක use වෙන විදිය අපි දැන් example එක්කම බලමු.
Capital A, වල binary value එක 0100 0001
Simple a, වල binary value එක 0110 0001
Capital A සහ simple a අතර වෙනස බැලුවම third MSB (Most significant bit) එකේ වෙනස ඔයාට පේනවා ඇති.
මොකක්ද එතකොට මේ MSB කියන්නේ? MSB එහෙම නැත්නම් Most Significant Bit කියන්නේ කිසියම් සංඛාවක් වමේ ඉදන් දකුණට කියවනකොට වම් කෙලවරේම පිහිටි ශුන්ය නොනව අගය. ඒ වගේම වම් කෙලවරේම පිහිටි අගය LSB එහෙම නැත්නම් අපි Least Significant bit කියලා හදුන්වනවා.
Character | Binary | Decimal | Hexadecimal |
A | 0100 0001 | 65 | 0x41 |
a | 0110 0001 | 97 | 0x61 |
මේ example එකට අනුව, ASCII වල, upper සහ lover case වල වෙනස 32 ක් වෙනවා. ඒ කියන්නේ 97 – 65 = 32. (0 ×20). දැන් ඔයාලට තේරෙනවා ඇති ASCII method use කරලා capital simple characters වල values හොයන කොට decimal value එකට 32 ක් එකතු කරලා හරි අඩු කරලා හරි අගයන් හොයා ගන්න පුලුවන් කියලා.
Character | Binary | Decimal | Hexadecimal |
0 | 0011 0000 | 48 | 0x30 |
1 | 0011 0001 | 49 | 0x31 |
2 | 0011 0010 | 50 | 0x32 |
3 | 0011 0011 | 51 | 0x33 |
4 | 0011 0100 | 52 | 0x34 |
5 | 0011 0101 | 53 | 0x35 |
6 | 0011 0110 | 54 | 0x36 |
7 | 0011 0111 | 55 | 0x37 |
8 | 0011 1000 | 56 | 0x38 |
9 | 0011 1001 | 57 | 0x39 |
මේ table එකට අනුව, ASCII values වල මුල් bits 4, ඒ කියන්නේ 0011 කියන bits ටික අයින් කරලා එන value එක convert කරාම ලේසියෙන්ම decimal value එක ගන්න පුලුවන්. ඒ වගේම තමයි first binary value එකට, ඒ කියන්නේ 0000 0000 ට 48 කියන decimal value එකේ binary value එක වෙන 0011 0000 එකතු කරාම 0011 0000 කියන අගය ලේසියෙන්ම ගන්න පුලුවන්.
ඒ විතරක් නෙවෙයි. Binary value එකක MSB වල අගය 0 නම් ඒක ASCII අගයක් විදියටත් encoding වෙලා තියෙනවා කියලත් MSB වල අගය 1 නම් ඒක ASCII වලින් encoding වෙච්චි අගයක් නෙවෙයි කියලා තමයි developers ලා කියන්නේ.
ASCII සහ Unicode
දැන් අපි බලමු ASCII සහ Unicode අතරේ තියෙන connection එක ගැන. අපි මුලින්ම කතා උනානේ ASCII introduce කරේ English text typing වලට. ඒ කාලේ ASCII introduce කරේ bit 7 කින් character 127 ක් වගේ represent කරන්න පුලුවන් වෙන්න.
ඉතිං bit 7 කින represent කරන්න පුලුවන් character ගාන ගොඩක් පොඩි නිසා ASCII වල අලුත් version එකක් ආවා extended ASCII කියලා. ඒක use කරලා අපට characters 256 ක් represent කරන්න පුලුවන් හැකියාව ලැබුනා.
ලෝකයේ Sinhala, Hindi, Tamai වගේ ගොඩක් languages use කරනවා. ඉතිං ASCII method එක තිබ්බා කියලා අපට මේ හැම language එකේම type කිරීමේ හැකියාව ලැබුනේ නෑ. ඒකට විසදුමක් විදියට තමයි Unicode ලෝකයට ආවේ.
Unicode වලත් character represent කරන්න methods දෙකක use වෙනවා. UTF (Unicode Transformation Format) සහ UCS (Universal Coded Character Set) කියලා අපි හදුන්වන්නේ ඒ methods දෙක තමයි. UFT (Unicode Transformation Format) එක ගත්තම mainly කොටස් 4 කට බෙදෙනවා. ඒ කියන්නේ , UTF – 7, UTF – 8, UTF – 16 සහ UTF 32.
UTF – 7 ASCII method එක ගැන බැලුවාම එකේ, symbols represent කරන්න 0 – 127 වෙන්කල් තියෙන characters තමයි use කරේ. ඉතිං මේ process එක පහසු කර ගන්න 0 – 127 වෙන්කල් තියෙන characters මේ විදියට කොටස් වලට බෙදලා තියෙනවා.
0 – 31 – Control Characters
32 – 64 – Standard Symbolic Characters
65 – 90 – Lathan American Capital Letters Characters
91 – 96 – Separate Characters
97 – 122 – Lathan American Simple Letter Characters
123 – 127 – Separate Characters
UTF – 7 වලට පස්සේ ආපු encoding method එක තමයි UTF – 8 කියන්නේ. ඒකත් mainly කොටස් 8 කට බෙදලා තියෙනවා.
0 – 31 – Control Characters
32 – 64 – Stranded Symbolic Characters
65 – 90 – Lathan American Capital Letter Characters
91 – 96 – Separate Characters
97 – 122 – Lathan American Simple Letter Characters
123 – 127 – Separate Characters
128 – 191 – Abstract Symbolic Characters
192 – 255 – Various Accented Alphabetical Characters
ඉතිං කාලයත් එක්කම UTF – 8 කියන method එකත් character represent කරන්න මදි උනා. ඒකේ result එකක් විදියට UTF – 16 සහ UTF – 32 කියන methods ලෝකයට ආවා. ඉතිං ඒ නිසාම විවිධ භාශා, Unicode symbols, general punctuation symbols, Currency symbols, Letter like symbols, Number form symbols, Arrow symbols, Mathematical symbols, Miscellaneous technical symbols, Optical character recognition symbols, Block element symbols සහ emoji symbols use කරන්න පුලුවන් හැකියාව ලැබුනා.
අපි කතා කරන අනිත් method එක තමයි USE කියන්නේ. මේක ISO ( international Organization for Standardization ) කියන ආයතනය මගින් පාලනය කරන අතර characters 143 857 විතර මේ නිසා represent කිරීමේ හැකියාව ලැබිලා තියෙනවා.
Advantages and Disadvantages of ASCII
දැන් අපි බලමු ASCII වල තියෙන advantages and disadvantages මොනවද කියලා.
Advantages
ASCII කියන්නේ විශ්වීය වශයෙන් පිලිගන්න language encoding method එකක්. ඒ කියන්නේ PC , Lap නිර්මාණය කරනකොට ASCII වල developed method එකක් විදියට Unicode මේ වෙද්දී ලෝකයේ use කරනවා. ඒක නිසා අපට ඕනිම language එකක් type කරන්න හැකියාව ලැබිලා තියෙනවා. Efficient of programming – ඒ කියන්නේ PC එකේ lap එකේ වැඩ කරනකොට ලේසියෙන්ම වැඩ කර ගන්න පුලුවන්. මොකද letters, numbers, වගේ දේවල් type කරන්න හැකියාව ASCII නිසා අපට ලැබිලා තියෙනවා.
Compact character encoding – Compact character encoding කියන්නේ ASCII වල තියෙන තවත් advantage එකක්. ඒ කියන්නේ bit 7 ක standard එකක් තියා ගන්න ඕනි කියලා. අපි ASCII method එක use කරලා ලෝකේ කොතන ඉදන් type කරත් හරිම format එකට අදල message එක user ට හම්බවෙන්නේ ASCII වල තියෙන Compact character encoding නිසා.
Disadvantages
කලින් අපි ASCII වල තියෙන advantages කතා කරානේ දැන් අපි disadvantages මොනවද කියලා බලමු. ASCII වල disadvantages ගත්තම ලොකුවට කියන්න දේකුත් නැහැ. හැබැයි English language එක නැතුව වෙන Lathan, Greek වගේ languages use කරද්දී සමහර letters type කරද්දී පොඩි පොඩි ගැටලු මතු වෙනවා.