آشنایی با کدهای اسکی (ASCII) — به زبان ساده (+ دانلود فیلم آموزش گام به گام)
اگر کامپیوترها با سیستم دودویی کار میکنند پس چگونه میتوان حروف و کلمات را در آنها ذخیره کرد؟ برای این کار به هر کاراکتر عددی را نسبت میدهیم که با عنوان «رمزگذاری کاراکترها» شناخته میشود.
فیلم آموزشی آشنایی با کدهای اسکی
برای فهم اینکه کدگذاری حروف چگونه کار میکند یک مثال ساده شروع میکنیم؛ اعداد ۱ تا ۲۶ را برای حروف الفبای انگلیسی در نظر بگیرید. با کنار هم قرار دادن اعداد «۱۵ ۱۲ ۱۲ ۵ ۸» یک پیام کدگذاری شده ساده خواهید داشت که نمایانگر کلمه «hello» است.
مشخص است که برای دریافت همه اجزای زبان انگلیسی (شامل حروف بزرگ و کوچک، اعداد و علائم) به بیش از ۲۶ عدد نیاز است. به همین دلیل «کد استاندارد آمریکایی برای تبادل اطلاعات» (American Standard Code for Information Interchange, ASCII)، به عنوان اولین استاندارد برای رمزگذاری کاراکترها ابداع شد.
تاریخچه
«مؤسسه استانداردهای ملی آمریکا» (American National Standards Institute, ANSI) در ۶ اکتبر ۱۹۶۰ شروع به کار بر روی «اسکی» (ASCII) کرد. طرح اولیه این کدگذاری به صورت ۵ بیتی در کدهای تلگرافی داشت و توسط «امیلی بادوت» (Emile baudot) ابداع شد. اما در پایان کمیته طراح تصمیم به استفاده از کد ۷ بیتی گرفت.
۷ بیت امکان کدگذاری از ۱۲۸ کاراکتر را میدهد. با توجه به اینکه کاراکترهای انگلیسی فقط به ۱۲۸ عدد نیاز داشتند، استفاده از ۷ بیت به معنی به حداقل رساندن هزینه انتقال این دادههاست. (برعکس ۸ بیت)
۳۲ کاراکتر اول اسکی برای کاراکترهای کنترلی استفاده میشود. این کاراکترها برای انتقال دستورالعملهای خاصی به دستگاههای دیگر مثل پرینتر مورد استفاده قرار میگیرد. برای مثال کاربر میتواند یک خط را ... کند، یک کاراکتر را حذف کند و در برخی دستگاهها مثل «تله تایپ مدل ۳۳» (TeleType model 33) زنگ را به صدا درآورد.
یک نمونه تلهتایپ مدل 33
انجمن استاندارد آمریکا اولین نسخه اسکی را در سال ۱۹۶۳ منتشر کرد و در سال ۱۹۶۷ اصلاح نمود. آخرین بهروزرسانی اصلی در سال ۱۹۸۶ بود. اسکی اولین بار برای استفاده تجاری در شبکه مخابرات آمریکا دیده شد.
در ۱۱ مارچ ۱۹۶۸، رئیسجمهور وقت آمریکا «لیندون بی. جانسون» (Lyndon B. Johnson) دستور داد باید همه کامپوترهای «دولت فدرال آمریکا» استاندارد اسکی را پشتیبانی کنند. به این ترتیب جایگاه اسکی در تاریخ کامپیوتر آمریکا محکم شد.
طرحهای کدگذاری دیگری نظیر «الفبای بینالمللی تلگراف نسخه ۲» (International Telegraph alphabet No.2, ITA2) در آن زمان وجود داشت ولی اسکی به سرعت به استاندارد اصلی زبان انگلیسی تبدیل شد. اسکی رایجترین نوع کدگذاری بود، تا اینکه در سال ۲۰۰۷ «یو. تی. اف. ۸» (UTF-8) از آن پیشی گرفت.
جدول اسکی
برای تشخیص مقدار اسکی یک کاراکتر، رایجترین روش جستجو در جدول اسکی است. جدول اسکی هر کاراکتر را به مقدار مشخصی بین ۰ تا ۱۲۷ ربط میدهد.
کاراکترهای کنترلی
کاراکترهای کنترلی ۳۲ خط اول جدول را به خود اختصاص میدهند. این کاراکترها چاپ نمیشوند، در عوض برای ارسال یک دستور به دستگاههای دیگر نظیر پرینتر استفاده میشود. سیستم 8 تایی که در جدول بالا آورده شده است برای سیستمهای قدیمی استفاده شده و به نوعی منسوخ است.
ده دهی | دو دویی | 8تایی | 16تایی | کاراکتر | توضیحات |
---|---|---|---|---|---|
0 | 0000 0000 | 000 | 00 | NUL | خالی |
1 | 0000 0001 | 001 | 01 | SOH | شروع سرتیتر |
2 | 0000 0010 | 002 | 02 | STX | شروع متن |
3 | 0000 0011 | 003 | 03 | ETX | پایان متن |
4 | 0000 0100 | 004 | 04 | EOT | پایان ارسال |
5 | 0000 0101 | 005 | 05 | ENQ | جستجو |
6 | 0000 0110 | 006 | 06 | ACK | تایید شد |
7 | 0000 0111 | 007 | 07 | BEL | زنگ |
8 | 0000 1000 | 010 | 08 | BS | پسبرد |
9 | 0000 1001 | 011 | 09 | TAB | فاصله افقی |
10 | 0000 1010 | 012 | 0A | LF | خط جدید |
11 | 0000 1011 | 013 | 0B | VT | فاصله عمودی |
12 | 0000 1100 | 014 | 0C | FF | صفحه جدید |
13 | 0000 1101 | 015 | 0D | CR | بازگشت محموله |
14 | 0000 1110 | 016 | 0E | SO | بیرون آوردن |
15 | 0000 1111 | 017 | 0F | SI | داخل کردن |
16 | 0001 0000 | 020 | 10 | DLE | خروج از داده ها |
17 | 0001 0001 | 021 | 11 | DC1 | کنترل 1 دستگاه |
18 | 0001 0010 | 022 | 12 | DC2 | کنترل 2 دستگاه |
19 | 0001 0011 | 023 | 13 | DC3 | کنترل 3 دستگاه |
20 | 0001 0100 | 024 | 14 | DC4 | کنترل 4 دستگاه |
21 | 0001 0101 | 025 | 15 | NAK | تایید نشده |
22 | 0001 0110 | 026 | 16 | SYN | synchronous idle |
23 | 0001 0111 | 027 | 17 | ETB | پایان بلوک انتقال |
24 | 0001 1000 | 030 | 18 | CAN | لغو |
25 | 0001 1001 | 031 | 19 | EM | پایان رسانه |
26 | 0001 1010 | 032 | 1A | SUB | جایگزینی |
27 | 0001 1011 | 033 | 1B | ESC | خروج |
28 | 0001 1100 | 034 | 1C | FS | جداکننده فایل |
29 | 0001 1101 | 035 | 1D | GS | جداکننده گروهی |
30 | 0001 1110 | 036 | 1E | RS | جداکننده ضبط |
31 | 0001 1111 | 037 | 1F | US | جداکننده واحد |
127 | 0111 1111 | 177 | 7F | DEL | پاک کردن |
کاراکترهای قابل چاپ
95 کاراکتر قابل چاپ در اسکی وجود دارند. توجه کنید که فاصله هم یک کاراکتر محسوب میشود.
ده دهی | دو دویی | 8تایی | 16تایی | کاراکتر |
---|---|---|---|---|
32 | 0010 0000 | 040 | 20 | فاصله |
33 | 0010 0001 | 041 | 21 | ! |
34 | 0010 0010 | 042 | 22 | " |
35 | 0010 0011 | 043 | 23 | # |
36 | 0010 0100 | 044 | 24 | $ |
37 | 0010 0101 | 045 | 25 | % |
38 | 0010 0110 | 046 | 26 | & |
39 | 0010 0111 | 047 | 27 | ' |
40 | 0010 1000 | 050 | 28 | ( |
41 | 0010 1001 | 051 | 29 | ) |
42 | 0010 1010 | 052 | 2A | * |
43 | 0010 1011 | 053 | 2B | + |
44 | 0010 1100 | 054 | 2C | , |
45 | 0010 1101 | 055 | 2D | - |
46 | 0010 1110 | 056 | 2E | . |
47 | 0010 1111 | 057 | 2F | / |
48 | 0011 0000 | 060 | 30 | 0 |
49 | 0011 0001 | 061 | 31 | 1 |
50 | 0011 0010 | 062 | 32 | 2 |
51 | 0011 0011 | 063 | 33 | 3 |
52 | 0011 0100 | 064 | 34 | 4 |
53 | 0011 0101 | 065 | 35 | 5 |
54 | 0011 0110 | 066 | 36 | 6 |
55 | 0011 0111 | 067 | 37 | 7 |
56 | 0011 1000 | 070 | 38 | 8 |
57 | 0011 1001 | 071 | 39 | 9 |
58 | 0011 1010 | 072 | 3A | : |
59 | 0011 1011 | 073 | 3B | ; |
60 | 0011 1100 | 074 | 3C | < |
61 | 0011 1101 | 075 | 3D | = |
62 | 0011 1110 | 076 | 3E | > |
63 | 0011 1111 | 077 | 3F | ? |
64 | 0100 0000 | 100 | 40 | @ |
65 | 0100 0001 | 101 | 41 | A |
66 | 0100 0010 | 102 | 42 | B |
67 | 0100 0011 | 103 | 43 | C |
68 | 0100 0100 | 104 | 44 | D |
69 | 0100 0101 | 105 | 45 | E |
70 | 0100 0110 | 106 | 46 | F |
71 | 0100 0111 | 107 | 47 | G |
72 | 0100 1000 | 110 | 48 | H |
73 | 0100 1001 | 111 | 49 | I |
74 | 0100 1010 | 112 | 4A | J |
75 | 0100 1011 | 113 | 4B | K |
76 | 0100 1100 | 114 | 4C | L |
77 | 0100 1101 | 115 | 4D | M |
78 | 0100 1110 | 116 | 4E | N |
79 | 0100 1111 | 117 | 4F | O |
80 | 0101 0000 | 120 | 50 | P |
81 | 0101 0001 | 121 | 51 | Q |
82 | 0101 0010 | 122 | 52 | R |
83 | 0101 0011 | 123 | 53 | S |
84 | 0101 0100 | 124 | 54 | T |
85 | 0101 0101 | 125 | 55 | U |
86 | 0101 0110 | 126 | 56 | V |
87 | 0101 0111 | 127 | 57 | W |
88 | 0101 1000 | 130 | 58 | X |
89 | 0101 1001 | 131 | 59 | Y |
90 | 0101 1010 | 132 | 5A | Z |
91 | 0101 1011 | 133 | 5B | [ |
92 | 0101 1100 | 134 | 5C | |
93 | 0101 1101 | 135 | 5D | ] |
94 | 0101 1110 | 136 | 5E | ^ |
95 | 0101 1111 | 137 | 5F | _ |
96 | 0110 0000 | 140 | 60 | ` |
97 | 0110 0001 | 141 | 61 | a |
98 | 0110 0010 | 142 | 62 | b |
99 | 0110 0011 | 143 | 63 | c |
100 | 0110 0100 | 144 | 64 | d |
101 | 0110 0101 | 145 | 65 | e |
102 | 0110 0110 | 146 | 66 | f |
103 | 0110 0111 | 147 | 67 | g |
104 | 0110 1000 | 150 | 68 | h |
105 | 0110 1001 | 151 | 69 | i |
106 | 0110 1010 | 152 | 6A | j |
107 | 0110 1011 | 153 | 6B | k |
108 | 0110 1100 | 154 | 6C | l |
109 | 0110 1101 | 155 | 6D | m |
110 | 0110 1110 | 156 | 6E | n |
111 | 0110 1111 | 157 | 6F | o |
112 | 0111 0000 | 160 | 70 | p |
113 | 0111 0001 | 161 | 71 | q |
114 | 0111 0010 | 162 | 72 | r |
115 | 0111 0011 | 163 | 73 | s |
116 | 0111 0100 | 164 | 74 | t |
117 | 0111 0101 | 165 | 75 | u |
118 | 0111 0110 | 166 | 76 | v |
119 | 0111 0111 | 167 | 77 | w |
120 | 0111 1000 | 170 | 78 | x |
121 | 0111 1001 | 171 | 79 | y |
122 | 0111 1010 | 172 | 7A | z |
123 | 0111 1011 | 173 | 7B | { |
124 | 0111 1100 | 174 | 7C | | |
125 | 0111 1101 | 175 | 7D | } |
126 | 0111 1110 | 176 | 7E | ~ |
بیشتر بدانید
روشهای کدگذاری زیادی وجود دارند. معروفترین آنها در سطح وب UTF-8 است، که طبق آمار 87% از همه صفحات وب را به خود اختصاص داده است.
UTF-8 با اسکی سازگار است؛ به این معنا که 128 کاراکتر اول هر دو یکسان هستند. UTF میتواند از دو، سه یا چهار بایت هم برای کدگذاری رسمالخطهایی مانند لاتین، یونانی، سیریلیک، عربی، چینی، کرهای و ژاپنی استفاده کند.
ببخشید طبق نوشته های بالا اگر ما حرف a را وارد کنیم در کامپوتر کد 0110 0001 دستور داده میشود در حالی که اگر ما عدد 97 رو هم وارد کنیم باز هم همین کد وارد میشه سوالم اینه وقتی کد هر دو یکیه کامپیوتر چطور تشخیص میده که ما عدد رو وارد کردیم یا حرف رو ؟؟؟؟
عدد ۹۷ یعنی ۹ به علاوه ۷ وقتی ورودی کامپیوتر رو ascii تنظیم شده دیگه خود اعداد جدای از غالب اسکی مفهوم ندارن
هر عدد هم کد اسکی مخصوص خود رو داره. مثلا کد اسکی عدد9 برابر 57 و کد اسکی عدد 7 برابر 55 هست. البته اگه عدد به صورت رشته ارسال بشه.
اعداد منفی کد چه کاراکترهایی هستند؟ به دلیل مواجه شدن با متن زیر این سوال را می پرسم:
اگر از نوع داده Char برای نگهداری مقادیر integer استفاده می کنید، شما همیشه باید تعیین کنید که آن متغیر دارای علامت (signed) یا بدون علامت (unsigned) می باشد. یک متغیر دارای علامت (signed) از نوع char می تواند مقادیر عددی بین 128- تا 127 را در خود نگهدارد. یک متغیر بدون علامت (unsigned) از نوع char می تواند مقادیر عددی بین 0 و 255 را در خودش نگهداری کند.
عالی هست. باتشکر.
سلام ببخشید منظورتون از 8 تایی و یا 16 تایی در جدول اسکی چی هست؟ لظفا جواب بدین ممنون
سلام ممنون از اصلاحاتی که انجام دادید
توی جدول کد های باینری(دودویی) رو برعکس نوشتید یعنی باید جای 4بیت ها(بایت ها) با هم عوض بشه تا درست نشون بده
مثلا 1 نوشتید 0000 0001 در صورتی که 0001 0000 میشه
+
توی جدول اول 0 تا 31 که چاپ نمیشن میشه 32 کاراکتر کنترلی ولی شما 127 رو هم نوشتید که باید بره جدول پایین
+
شما نوشتید 95 کاراکتر قابل چاپ وجود داره از 32 تا 127 میشه 95 تا ولی توی جدول تا 126 نوشتید پس کاراکتر 127 عمل delete رو جا انداختید
البته بنده نیز سوالی خدمتتان دارم
با توجه به اینکه کاراکتر 127 عمل دیلیت انجام میده درست است که جزو کاراکتر های قابل چاپ دسته بندیش کنیم؟چون خروجی ندارد
ممنون از مقاله ی خوبتون و از این دست مقالات رایگان فرا درس که مثل باقی سایت ها صرفا ترجمه نیست بسیار کار پسندیده و قابل احترامی است.مقالات فرادرس یه چیزی مثل ویکیپدیا ایرانی البته با مطالب دقیق تر است.
این کار رو ادامه بدید
با سلام؛
از همراهی شما با مجله فرادرس و ارائه بازخوردهایتان سپاسگزاریم. شیوه نمایش اعداد در جدول اصلاح شد و در حال حاضر کدها به درستی نمایش داده میشوند. تعداد موارد مشخص شده در حدول ۹۵ مورد است؛ برای محاسبه باید خود ۳۲ و ۱۲۷ را هم در نظر بگیرید که در این صورت میشود ۹۵ مورد (با شمارش سطرهای جدول این مورد بهتر شفاف میشود). خیر؛ کاراکترهای اسکی قابل چاپ صرفا مواردی هستند که در این جدول ارائه شدهاند و عمل Delete جزو این جدول محسوب نمیشود.
از بازخورد مثبت و انرژیبخش و پیام محبتآمیز شما قدردانیم. شاد؛ پیروز و تندرست باشید.
پیام hello اول صفحه هم رمز نگاریش یه هشت کم گذاشتین
15 12 12 5 8
با سلام؛
از همراهی شما با مجله فرادرس و ارائه بازخورد سپاسگزاریم. اصلاحات لازم در متن انجام شد.
سپاسگزارم.
ممنون از اطلاعات خوبتون وای
طبق گوگل
ANSI, which stands for the “American National Standards Institute”
هست
با سلام؛
از همراهی شما با مجله فرادرس و ارائه بازخوردهایتان سپاسگزاریم. تایپوی موجود در متن اصلاح شد.
با سپاس.
سلام
بین کاراکتر های ] و [ هیچی نیست …
این دقیقا چه کاراکتریه؟؟؟؟
با کد اسکی 92
سلام وقتتون بخیر،ی سوال هست ک خیلی ذهن منو ب خودش مشغول کرده،من 2 سال پیش فارق التحصیل شدم از رشته ی سخت افزار و الکترونیک،2 مدرک دارم و اشنایی کامل با مدار منطقی دارم،کاملا کد های اسکی رو هم میدونم ولی واقعا کاربردشونو نمیفهمم،میدونم خیلی مهم هستن ولی نمیدونم اصلا چطور دانشمندان زبان های برنامه نویسی رو ساختن،اونا چطور با استفاده از لامپ ها ک 0 و 1 بودند یعنی خاموش و روشن،ترانزیستور ها رو میسازن ولی نمیفهمم چطور این درک رو ب کامپیوتر میدن ک صحبت و زبان ما رو بفهمه
با سلام یک کد هست با توجه به تخصصتون امکانش هست تشخیص بدین مربوط به چه نوع کد گذاری و برای تشخیصش چه کار میشه کرد با تشکر
MD5 HASH خروجی 1edce0 00de2c7b7e صفر
با سلام؛
از همراهی شما با مجله فرادرس سپاسگزاریم. MD5 یک تابع هش است که به طور گستردهای از آن در حوزههای گوناگون استفاده میشود. تابع هش MD5 یک هش ۱۲۸ بیتی تولید میکند. این تابع هش در ابتدا با این هدف ساخته شده بود که به عنوان یک تابع هش رمزنگاری مورد استفاده قرار بگیرد ولی به دلیل آسیبپذیریهای امنیتی متعدد، برای این موضوع معمولا استفاده نمیشود. کاربرد اصلی این تابع هش برای سنجش درستی اطلاعات در مقصد (چکسام)، به طور خاص در شبکههای کامپیوتری، مورد استفاده قرار میگیرد. به بیان سادهتر، وقتی یک فایل وجود دارد و این فایل مبادله میشود، MD5 آن پیش از مبادله با MD5 آن پس از مبادله مقایسه میشود تا مشخص شود فایل درست و بدون اشکال مبادله شده است یا خیر. در حال حاضر، رمزگشاهای مختلفی برای هشهای MD5 وجود دارند (نشانگر آسیبپذیری امنیتی بالای این هش) که با جستجوی عبارت «md5 hash decoder» میتوانید به آنها دسترسی پیدا کنید. در همین راستا، مطالعه مطلب زیر نیز به شما پیشنهاد میشود.
تابع هش یا درهم سازی (Hash Function) چیست؟ — به زبان ساده
پیروز، شاد و تندرست باشید.
برای درک بهتر این مطلب کتاب معماری کامپیوتر را مطالعه کنید و اگر می خواهید ریشه ای تر مطالعه کنید در مورد ساخت گیت های منطقی با استفاده از قطعات الکترونیکی تحقیق کنید و در نهایت زبان اسمبلی را که بخوانید خیلی چیزا دستگیرتان می شود.
تشکر ، جالب بود.