باینری، دهدهی و هگزادسیمال: چطور از یکی به دیگری برویم

تبدیل بین مبناها تا وقتی نفهمیده‌اید جادو به نظر می‌رسد، اما همیشه یک ایده است: هر رقم بسته به جایی که دارد ارزش پیدا می‌کند. اینجا یاد می‌گیرید چطور باینری را به دهدهی و دهدهی را به باینری دستی تبدیل کنید، هگزادسیمال را بی‌ترس بخوانید و متن را به بیت ترجمه کنید، با محاسبه‌های حل‌شده و یک جدول 0 تا 15 برای دم‌دست.

به‌روزرسانی:

سیستم مکانی چیست

در عدد دهدهی 4095 رقم 4 ارزش 4 ندارد: ارزشش 4000 است، چون در جایگاه هزارها قرار دارد. هر جایگاه رقم را در یک توان 10 (1، 10، 100، 1000 و ...) ضرب می‌کند. این همان سیستم مکانی است و مبنا تعداد رقم‌های متفاوتی است که به کار می‌رود: ده تا در دهدهی.

باینری هم همین‌طور کار می‌کند، اما با مبنای 2: فقط 0 و 1 وجود دارد و هر جایگاه دو برابر قبلی ارزش دارد. هگزادسیمال مبنای 16 دارد: شانزده رقمش 0 تا 9 و حروف A تا F هستند و هر جایگاه 16 برابر قبلی ارزش دارد. رایانه‌ها با باینری کار می‌کنند چون یک مدار فقط باید دو حالت (خاموش و روشن) را تشخیص بدهد، و هگزادسیمال راهی کوتاه برای نوشتن آن بیت‌هاست.

ارزش هر جایگاه. حفظ بودن توان‌های 2 تا 128 تقریباً همه محاسبه‌ها را برایتان ساده می‌کند.
جایگاه (از راست به چپ)ارزش در باینریارزش در هگزادسیمال
اول11
دوم216
سوم4256
چهارم84096
پنجم1665536
ششم321048576
هفتم6416777216
هشتم128268435456

از باینری به دهدهی، دستی

هر رقم را با ارزش جایگاهش می‌نویسید و فقط جایگاه‌هایی را که 1 دارند جمع می‌زنید. مثال با 1101: از راست به چپ جایگاه‌ها ارزش 1، 2، 4 و 8 دارند.

  1. عدد را بنویسید و زیر آن ارزش هر جایگاه را: 1 1 0 1 بالای 8 4 2 1.
  2. ببینید در هر جایگاه چیست: 1 در جایگاه 8، 1 در جایگاه 4، 0 در جایگاه 2 و 1 در جایگاه 1.
  3. جایگاه‌هایی که 0 دارند را نادیده بگیرید (اینجا، جایگاه 2).
  4. جمع بزنید: 8 + 4 + 0 + 1 = 13. پس 1101 در باینری برابر 13 در دهدهی است.

با رقم‌های بیشتر هم همین است: 11111111 برابر 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255 است، بزرگ‌ترین مقداری که در 8 بیت جا می‌شود. و 10110110 برابر 128 + 32 + 16 + 4 + 2 = 182 است.

از دهدهی به باینری، با تقسیم‌های متوالی

عدد را بارها بر 2 تقسیم می‌کنید و باقی‌مانده هر تقسیم (همیشه 0 یا 1) را یادداشت می‌کنید تا خارج‌قسمت 0 شود. باقی‌مانده‌ها، از پایین به بالا خوانده شوند، عدد باینری هستند. مثال با 45:

با خواندن باقی‌مانده‌ها از پایین به بالا 101101 به دست می‌آید. برای بررسی، جمع بزنید: 32 + 8 + 4 + 1 = 45.

یک روش جایگزین هم هست که بسیاری ترجیح می‌دهند: کم کردن توان‌های 2 از بزرگ به کوچک. برای 200: 128 جا می‌شود (72 می‌ماند)، 64 جا می‌شود (8 می‌ماند)، 32 و 16 جا نمی‌شوند، اما 8 جا می‌شود (0 می‌ماند). جایگاه‌های استفاده‌شده 128، 64 و 8 هستند، پس 200 = 11001000.

هگزادسیمال: شانزده رقم و یک جدول برای دم‌دست

چون رقمی برای 10 تا 15 وجود ندارد، از حروف A، B، C، D، E و F استفاده می‌شود. یک رقم هگزادسیمال دقیقاً معادل چهار بیت («نیبل») است و برای همین خیلی مناسب است: یک بایت، که 8 بیت است، فقط با دو رقم هگزادسیمال نوشته می‌شود.

برای تبدیل هگزادسیمال به دهدهی، هر رقم را در توان 16 جایگاهش ضرب کنید و جمع بزنید. مثلاً 3F = 3 × 16 + 15 = 63 و A3 = 10 × 16 + 3 = 163.

0 تا 15 در چهار مبنایی که ابزار نشان می‌دهد.
دهدهیباینری (4 بیت)هشتاییهگزادسیمال
0000000
1000111
2001022
3001133
4010044
5010155
6011066
7011177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F

چرا از هگزادسیمال استفاده می‌شود: بایت‌ها، رنگ‌ها و آدرس‌ها

یک بایت 8 بیت است و از 0 تا 255 می‌رود (00000000 تا 11111111). نوشتن بیت‌ها با دست کند و خطاخیز است؛ در هگزادسیمال همان بایت دو نویسه است، از 00 تا FF. برای تبدیل باینری به هگزادسیمال، بیت‌ها را از راست در گروه‌های چهارتایی جدا کنید و هر گروه را با رقمش در جدول عوض کنید. مثال: 11010111 به 1101 و 0111 تقسیم می‌شود که D و 7 هستند، پس برابر D7 است. در دهدهی 13 × 16 + 7 = 215 است.

معروف‌ترین مورد رنگ‌های وب است. در #FF8800 سه بایت هست: FF برای قرمز (255)، 88 برای سبز (136) و 00 برای آبی (0). نارنجی پررنگی است: تمام قرمز، کمی بیشتر از نصف سبز و هیچ آبی. هگزادسیمال در آدرس‌های حافظه، کدهای خطا و شناسه‌های شبکه هم می‌آید.

از متن به باینری با ASCII

رایانه هر حرف را به‌صورت یک عدد و آن عدد را به‌صورت بیت ذخیره می‌کند. در جدول ASCII حرف A برابر 65 است که در باینری 8 بیتی 01000001 می‌شود. کلمه «Hi» دو حرف است: H برابر 72 (01001000) و i برابر 105 (01101001) است، پس به شکل 01001000 01101001 نوشته می‌شود. «Hola» برابر 72، 111، 108 و 97 است، یعنی 01001000 01101111 01101100 01100001، یا در هگزادسیمال 48 6F 6C 61.

ابزار از رمزگذاری UTF-8 استفاده می‌کند: برای حروف ساده انگلیسی هر نویسه یک بایت 8 بیتی می‌گیرد، اما یک ñ، یک حرف دارای نشانه یا یک اموجی چند بایت می‌گیرند و بیش از 8 بیت می‌دهند. مثلاً ñ دو بایت است: 11000011 10110001 (C3 B1 در هگزادسیمال).

چطور همه این‌ها را با ابزار انجام دهیم

مبدل «باینری، دهدهی و هگز» برای بررسی محاسبه‌های دستی یا حل عددهای بلند بدون خطا مفید است.

  1. عدد را در فیلد مبنای خودش بنویسید: «دهدهی (مبنای 10)»، «باینری (مبنای 2)»، هشتایی یا «هگزادسیمال (مبنای 16)». سه‌تای دیگر خودکار پر می‌شوند.
  2. اگر رقمی به مبنا تعلق نداشته باشد (مثلاً 2 در باینری)، ابزار اطلاع می‌دهد.
  3. برای متن، آن را در فیلد «متن» بنویسید و «باینری (8 بیت برای هر نویسه)» و هگزادسیمال بایت‌ها را ببینید. می‌توانید بیت‌ها را هم در گروه‌های 8 تایی جای‌گذاری کنید تا به متن برگردند.
  4. برای مبناهای غیرمعمول، از «هر مبنا (2 تا 36)» استفاده کنید: مبنای مبدأ، مبنای مقصد و عدد را انتخاب می‌کنید.

محدودیت‌ها: فقط اعداد صحیح نامنفی (بدون اعشار و علامت) را تبدیل می‌کند و خودش صفرهای ابتدایی نمی‌گذارد، پس اگر 8 بیت ثابت می‌خواهید باید دستی کامل کنید (13 می‌شود 00001101). هیچ‌چیز از آنچه می‌نویسید از مرورگر شما بیرون نمی‌رود.

اشتباه‌های رایج

تمرین‌های حل‌شده

سعی کنید هرکدام را قبل از دیدن جواب حل کنید و بعد با ابزار بررسی کنید.

پرسش‌های متداول

1101 را چطور از باینری به دهدهی ببرم؟

ارزش جایگاه‌هایی را که 1 دارند جمع می‌زنید: 8 + 4 + 1 = 13. رقم دوم از راست 0 است، پس 2 جمع نمی‌شود.

255 در باینری و هگزادسیمال چقدر است؟

255 در باینری 11111111 و در هگزادسیمال FF است. بزرگ‌ترین مقداری است که در یک بایت 8 بیتی جا می‌شود.

چرا هگزادسیمال از حروف استفاده می‌کند؟

چون به شانزده نماد متفاوت نیاز دارد و سیستم دهدهی فقط ده تا (0 تا 9) می‌دهد. برای همین A برابر 10، B برابر 11، C برابر 12، D برابر 13، E برابر 14 و F برابر 15 است.

با 8 بیت چند عدد متفاوت می‌توان نوشت؟

256 عدد، از 0 تا 255. به‌طور کلی با n بیت می‌توان 2 به توان n مقدار را نمایش داد.

آیا ابزار عددهای منفی یا اعشاری را تبدیل می‌کند؟

نه، فقط اعداد صحیح نامنفی. برای متن از UTF-8 استفاده می‌کند، پس حروف دارای نشانه و اموجی‌ها بیش از 8 بیت می‌دهند.