کامپیوترها از اعداد استفاده میکنند. انسانها از حروف و نمادها استفاده میکنند. ما به یک پل نیاز داریم. ASCII آن پل است. ASCII هر حرف یا نماد را به یک عدد تبدیل میکند. کامپیوتر عدد را ذخیره میکند. وقتی ما آن را میخوانیم، کامپیوتر دوباره حرف را نشان میدهد. اینگونه است که متن در بسیاری از فایلها و برنامهها کار میکند.
یک کامپیوتر با برق کار میکند. دو حالت دارد. روشن و خاموش. ما به این حالتها بیت میگوییم. یک بیت معادل ۰ یا ۱ است. تعداد زیادی بیت در کنار هم اعداد بزرگتری را میسازند. هشت بیت یک بایت را تشکیل میدهند. با بیتها میتوانیم بشماریم. با شمردن، میتوانیم چیزها را نامگذاری کنیم. ASCII از شمارش برای نامگذاری حروف و نمادها استفاده میکند.
یک بیت دو انتخاب ایجاد میکند. دو بیت چهار انتخاب ایجاد میکند. در ریاضی، این ایده به صورت \(\;2^n\) نشان داده میشود. برای \(n=7\) ، \(2^7 = 128\) انتخاب داریم. برای \(n=8\) ، \(2^8 = 256\) انتخاب داریم. ASCII از 7 بیت استفاده میکند. این 128 آیتم نامگذاری شده میدهد. افراد بعداً مجموعههای 8 بیتی با 256 آیتم ساختند. به این مجموعهها ASCII توسعهیافته میگویند.
ASCII مخفف عبارت American Standard Code for Information Interchange (کد استاندارد آمریکایی برای تبادل اطلاعات) است. این زبان در دهه ۱۹۶۰ میلادی آغاز به کار کرد. این زبان برای چاپگرهای اولیه، تلهتایپها و رایانهها ساخته شده بود. این زبان به هر حرف، عدد، فاصله و برخی نمادها یک عدد میدهد. همچنین به اقداماتی مانند خط جدید، اعداد ویژهای میدهد. نسخه اول از ۷ بیت استفاده میکرد، بنابراین اعدادی از ۰ تا ۱۲۷ داشت.
به نکتهی جالبی توجه کنید. حروف کوچک ۳۲ تا بیشتر از جفت حروف بزرگ خود هستند. برای مثال، \(\;97 - 65 = 32\) . بنابراین 'a' 32 تا بیشتر از 'A' است. 'b' 32 تا بیشتر از 'B' است و به همین ترتیب. این الگو برخی از کارهای کامپیوتری را آسان میکند.
وقتی کلید Enter را فشار میدهید، کامپیوتر شما بسته به سیستم، ممکن است LF یا CR یا هر دو را ارسال کند. بسیاری از ابزارهای اینترنتی از LF استفاده میکنند. برخی از سیستمهای قدیمی از CR و LF با هم استفاده میکردند.
ما میتوانیم اعداد را به روشهای مختلفی بنویسیم. عدد اعشاری روش معمول شمارش است که از ارقام ۰ تا ۹ استفاده میکند. عدد دودویی فقط از ۰ و ۱ استفاده میکند. عدد هگزادسیمال (هگزادسیمال) از ۰ تا ۹ و A تا F استفاده میکند.
چطور میتوان عدد 'A' را با سیستم دودویی به ۶۵ تبدیل کرد؟ به بیتهای عدد 01000001 نگاه کنید. سمت چپترین بیت مربوط به عدد 128 است. سپس 64، 32، 16، 8، 4، 2، 1. فقط 64 و 1 روشن هستند. بنابراین \(01000001_{(2)} = 0\times128 + 1\times64 + 0\times32 + 0\times16 + 0\times8 + 0\times4 + 0\times2 + 1\times1 = 65\) .
یک کلید را فشار دهید. صفحه کلید یک کد به کامپیوتر ارسال میکند. سیستم آن را به یک شماره کاراکتر تبدیل میکند. برای بسیاری از کلیدها، آن شماره، شماره ASCII است. برنامه، شماره را در حافظه ذخیره میکند. وقتی متن را نشان میدهد، شماره را جستجو کرده و حرف را رسم میکند. وقتی ذخیره میکنید، اعداد به فایل میروند.
به پیام «سلام!» فکر کنید. حروف آن H، i و ! هستند. اعداد ASCII آنها ۷۲، ۱۰۵ و ۳۳ است. در حالت دودویی، آنها ۰۱۰۰۱۰۰۰، ۰۱۱۰۱۰۰۱ و ۰۰۱۰۰۰۰۱ هستند. شبکه این بیتها را ارسال میکند. طرف دیگر بیتها را میخواند. اعداد را میبیند. دوباره H، i و ! را نشان میدهد. اینگونه است که پیامهای متنی ساده حرکت میکنند.
مردم نمادهای بیشتری میخواستند. آنها حروفی مانند é، ñ و ø میخواستند. آنها نمادهای پولی مانند € را میخواستند. مجموعه ۷ بیتی فقط ۱۲۸ نماد داشت. بنابراین مردم از ۸ بیت استفاده میکردند. با ۸ بیت، \(2^8 = 256\) نماد به دست میآید. نیمه بالایی، از ۱۲۸ تا ۲۵۵، برای حروف و نمادهای اضافی استفاده میشد. اما مشکلی وجود داشت. گروههای مختلف اعداد متفاوتی را برای آن حروف اضافی انتخاب میکردند. این انتخابها صفحات کد نامیده میشوند.
از آنجا که صفحات کد متفاوت هستند، یک عدد میتواند در رایانه دیگر نماد متفاوتی را نشان دهد. به این ترکیب موجیبیک میگویند. شبیه کاراکترهای عجیب و غریب است. این یکی از دلایلی است که جهان به یونیکد روی آورد.
یونیکد یک استاندارد بزرگ است که میتواند زبانها، نمادهای ریاضی و ایموجیهای زیادی را نمایش دهد. این استاندارد گنجایش بیش از یک میلیون نماد را دارد. روشهای زیادی برای ذخیره یونیکد وجود دارد. یکی از روشهای محبوب، UTF-8 است.
با متن فقط ASCII، هر کاراکتر از یک بایت استفاده میکند. بنابراین کلمه cat از ۳ بایت استفاده میکند. عبارت hi mom با احتساب فاصله ۶ کاراکتر دارد، بنابراین از ۶ بایت استفاده میکند. به زبان ساده، \(\textrm{بایتهای ASCII} = \textrm{تعداد کاراکترها}\) .
کامپیوترها اغلب رشتهها را بر اساس شماره کاراکترهایشان مرتب میکنند. دستور ASCII چیزها را به روش خاصی گروهبندی میکند.
این یعنی اگر مقادیر ساده ASCII را مقایسه کنیم، Zoo قبل از apple میآید. مرتبسازی بر اساس اعداد است، نه بر اساس صدای کلمات.
توجه داشته باشید که علامت & است. عدد ASCII آن 38 است. علامت جمع + 43 است. علامت منها - 45 است.
مردم فقط با استفاده از کاراکترها تصاویر میسازند. به این هنر ASCII میگویند. در اینجا یک چهره کوچک با کاراکترهای ASCII ساخته شده است.
:-) لبخند ساده
(^_^) چهره دوستانه
o_O متعجب
هر وجه فقط از کاراکترهایی مانند دونقطه، خط تیره و پرانتز تشکیل شده است. بدون رنگ یا شکل. فقط متن.
ASCII از تلهتایپها و رایانههای اولیه رشد کرد. در سال ۱۹۶۳، اولین نسخه آن مورد توافق قرار گرفت. این کد به بسیاری از ماشینهای مختلف کمک میکرد تا با یکدیگر ارتباط برقرار کنند. با یک کد مشترک، حرفی مانند A در همه جا به معنای عدد یکسان بود. این امر ارسال پیام و چاپ متن را آسانتر میکرد.
ASCII فقط ۱۲۸ آیتم دارد. این برای همه زبانها کافی نیست. نمیتواند چینی، هندی، عربی یا بسیاری از خطوط دیگر را نشان دهد. نمیتواند ایموجی را نشان دهد. همچنین نمیتواند بسیاری از نمادهای ریاضی و موسیقی را نشان دهد. برای این موارد، ما از یونیکد استفاده میکنیم. یونیکد میتواند بسیاری از خطوط و نمادها را نشان دهد. UTF-8 راهی برای ذخیره آنها است. خبر خوب این است که تمام متنهای ASCII در UTF-8 کار میکنند. بنابراین سیستمهای مدرن میتوانند ASCII قدیمی را به راحتی بخوانند.
بیشتر برنامهها انتظار UTF-8 را دارند. اما وقتی یک فایل فقط حروف و نمادهای ASCII دارد، تحت UTF-8 هم به همان شکل به نظر میرسد. برنامهنویسان این را دوست دارند زیرا همه چیز را ساده نگه میدارد. صفحات وب، APIها و بسیاری از ابزارها از UTF-8 استفاده میکنند که شامل ASCII بدون تغییر است.
ASCII یک مجموعه ۷ بیتی است. این یعنی تا \(2^7 = 128\) کاراکتر مختلف. یک مجموعه توسعهیافته با ۸ بیت \(2^8 = 256\) آیتم دارد. اگر متن شما فقط کاراکترهای ASCII داشته باشد و \(n\) کاراکتر داشته باشد، \(n\) بایت استفاده میکند. در یک پیام کوچک مانند OK ، \(n = 2\) . بنابراین وقتی به صورت ASCII یا UTF-8 ذخیره میشود، از ۲ بایت استفاده میکند.
بعضی از آیتمهای ASCII کارهایی انجام میدهند و چاپ نمیشوند. Space جای خالی چاپ میکند. اما LF و CR مکاننما را حرکت میدهند. TAB میپرد. وقتی فایلی را در یک ویرایشگر خاص باز میکنیم، ممکن است LF را به صورت \n نشان دهد. آن نماد بخشی از خود ASCII نیست. این روشی است که ویرایشگر خط جدید را به شما نشان میدهد.
یک دستگاه برچسبساز را تصور کنید که نامها را چاپ میکند. این دستگاه نام را به صورت کاراکتر میخواند. هر کاراکتر را به اعداد ASCII تبدیل میکند. آن اعداد را در حافظه ذخیره میکند. با جستجوی نحوه رسم هر عدد، حروف را چاپ میکند. اگر به LF (10) برسد، قبل از چاپ بیشتر به خط بعدی میرود.
دوباره به کاراکتر '!' نگاه کنید. میتوانیم کد آن را به سه روش بنویسیم. دهدهی: 33. دودویی: 00100001. هگز: 21. در فرم ریاضی، \(\;33_{(10)} = 00100001_{(2)} = 21_{(16)}\) . هر فرم مقدار یکسانی دارد. برنامهها فرمی را که نیاز دارند انتخاب میکنند. مردم اغلب دهدهی میخوانند. کامپیوترها دودویی را دوست دارند. هگز یک راه کوتاه برای خواندن اعداد دودویی است.
ASCII کوچک و واضح است. در اوایل ساخته شد. بسیاری از ابزارها و پروتکلها بر اساس آن ساخته شدند. از آنجا که ۱۲۸ کد یونیکد اول با ASCII مطابقت دارند، این طرح هنوز هم کار میکند. به همین دلیل است که میتوانید فایلهای متنی بسیار قدیمی را روی یک تلفن یا لپتاپ جدید باز کنید و همان حروف را ببینید.
فایلی با متن Hello را باز کنید. بایتها اعداد ASCII 72 101 108 108 111 هستند. در زبان دودویی، این اعداد عبارتند از: 01001000 01100101 01101100 01101100 01101111. برنامه هر عدد را میخواند و H ello را روی صفحه نمایش رسم میکند. اگر عدد بعدی 10 باشد، قبل از رسم متن بیشتر به یک خط جدید میرود. این نشان میدهد که این فرآیند چقدر ساده و پایدار است.
عدد ۱۰ را در نظر بگیرید. در سیستم دودویی، این عدد ۰۰۰۰۱۰۱ است. در سیستم دهدهی، عدد ده است. در سیستم ASCII، عدد ۱۰ معادل LF یا همان خط تغذیه است. این نشان میدهد که چگونه میتوان یک عدد را به روشهای مختلف نشان داد. معنی آن از نحوه استفاده ما از عدد ناشی میشود. اگر بگوییم این یک کد کاراکتری است، پس ۱۰ به معنای LF است. اگر بگوییم فقط تعداد سیب است، پس ده سیب است. زمینه اهمیت دارد.
ما کلمه Sun را از یک دستگاه به دستگاه دیگر ارسال خواهیم کرد. کدها عبارتند از 'S' 83، 'u' 117، 'n' 110. در سیستم دودویی، 83 برابر با 01010011، 117 برابر با 01110101 و 110 برابر با 01101110 است. بیتها به صورت سیگنالهای روشن و خاموش حرکت میکنند. دستگاه دیگر بیتها را دوباره به عدد تبدیل میکند. سپس اعداد را به حروف تبدیل میکند. کلمه Sun را نشان میدهد. اگر کد بعدی 32 باشد، یک فاصله است. اگر کد بعدی 33 باشد، یک '!' است. قوانین هر بار یکسان باقی میمانند. این قدرت یک کد مشترک است.