سیستم مکانی چیست
در عدد دهدهی 4095 رقم 4 ارزش 4 ندارد: ارزشش 4000 است، چون در جایگاه هزارها قرار دارد. هر جایگاه رقم را در یک توان 10 (1، 10، 100، 1000 و ...) ضرب میکند. این همان سیستم مکانی است و مبنا تعداد رقمهای متفاوتی است که به کار میرود: ده تا در دهدهی.
باینری هم همینطور کار میکند، اما با مبنای 2: فقط 0 و 1 وجود دارد و هر جایگاه دو برابر قبلی ارزش دارد. هگزادسیمال مبنای 16 دارد: شانزده رقمش 0 تا 9 و حروف A تا F هستند و هر جایگاه 16 برابر قبلی ارزش دارد. رایانهها با باینری کار میکنند چون یک مدار فقط باید دو حالت (خاموش و روشن) را تشخیص بدهد، و هگزادسیمال راهی کوتاه برای نوشتن آن بیتهاست.
| جایگاه (از راست به چپ) | ارزش در باینری | ارزش در هگزادسیمال |
|---|---|---|
| اول | 1 | 1 |
| دوم | 2 | 16 |
| سوم | 4 | 256 |
| چهارم | 8 | 4096 |
| پنجم | 16 | 65536 |
| ششم | 32 | 1048576 |
| هفتم | 64 | 16777216 |
| هشتم | 128 | 268435456 |
از باینری به دهدهی، دستی
هر رقم را با ارزش جایگاهش مینویسید و فقط جایگاههایی را که 1 دارند جمع میزنید. مثال با 1101: از راست به چپ جایگاهها ارزش 1، 2، 4 و 8 دارند.
- عدد را بنویسید و زیر آن ارزش هر جایگاه را: 1 1 0 1 بالای 8 4 2 1.
- ببینید در هر جایگاه چیست: 1 در جایگاه 8، 1 در جایگاه 4، 0 در جایگاه 2 و 1 در جایگاه 1.
- جایگاههایی که 0 دارند را نادیده بگیرید (اینجا، جایگاه 2).
- جمع بزنید: 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:
- 45 ÷ 2 = 22، باقیمانده 1
- 22 ÷ 2 = 11، باقیمانده 0
- 11 ÷ 2 = 5، باقیمانده 1
- 5 ÷ 2 = 2، باقیمانده 1
- 2 ÷ 2 = 1، باقیمانده 0
- 1 ÷ 2 = 0، باقیمانده 1
با خواندن باقیماندهها از پایین به بالا 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.
| دهدهی | باینری (4 بیت) | هشتایی | هگزادسیمال |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
چرا از هگزادسیمال استفاده میشود: بایتها، رنگها و آدرسها
یک بایت 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 در هگزادسیمال).
چطور همه اینها را با ابزار انجام دهیم
مبدل «باینری، دهدهی و هگز» برای بررسی محاسبههای دستی یا حل عددهای بلند بدون خطا مفید است.
- عدد را در فیلد مبنای خودش بنویسید: «دهدهی (مبنای 10)»، «باینری (مبنای 2)»، هشتایی یا «هگزادسیمال (مبنای 16)». سهتای دیگر خودکار پر میشوند.
- اگر رقمی به مبنا تعلق نداشته باشد (مثلاً 2 در باینری)، ابزار اطلاع میدهد.
- برای متن، آن را در فیلد «متن» بنویسید و «باینری (8 بیت برای هر نویسه)» و هگزادسیمال بایتها را ببینید. میتوانید بیتها را هم در گروههای 8 تایی جایگذاری کنید تا به متن برگردند.
- برای مبناهای غیرمعمول، از «هر مبنا (2 تا 36)» استفاده کنید: مبنای مبدأ، مبنای مقصد و عدد را انتخاب میکنید.
محدودیتها: فقط اعداد صحیح نامنفی (بدون اعشار و علامت) را تبدیل میکند و خودش صفرهای ابتدایی نمیگذارد، پس اگر 8 بیت ثابت میخواهید باید دستی کامل کنید (13 میشود 00001101). هیچچیز از آنچه مینویسید از مرورگر شما بیرون نمیرود.
اشتباههای رایج
- خواندن باقیماندهها وارونه: در تقسیمهای متوالی، اولین باقیمانده رقم سمت راستترین است، نه چپترین.
- فراموش کردن صفرهای ابتدایی وقتی لازماند: 13 برابر 1101 است، اما بهعنوان بایت 00001101. وقتی طول جزئی از داده است، مثل یک رنگ یا ماسک شبکه، اهمیت دارد.
- اشتباه گرفتن حرف O با صفر یا B هگزادسیمال (11) با 8 هنگام کپی. در هگزادسیمال حروف بزرگ و کوچک ارزش یکسان دارند، اما با یک رقم یکی نیستند.
- ماندن پیشوند 0x یا علامت # هنگام تبدیل: اینها فقط نشانه هگزادسیمال بودن عدد هستند و باید قبل از جایگذاری برداشته شوند.
- فکر کردن اینکه 10 در باینری ده است: دو است. همان «10» بسته به مبنا 2، 10 یا 16 ارزش دارد.
تمرینهای حلشده
سعی کنید هرکدام را قبل از دیدن جواب حل کنید و بعد با ابزار بررسی کنید.
- 10110110 را به دهدهی و هگزادسیمال تبدیل کنید. جواب: 128 + 32 + 16 + 4 + 2 = 182؛ در گروههای چهارتایی، 1011 0110 = B6.
- 200 را به باینری و هگزادسیمال تبدیل کنید. جواب: 11001000 و C8 (12 × 16 + 8 = 200).
- 7F را به باینری تبدیل کنید. جواب: 7 = 0111 و F = 1111، پس 01111111 که در دهدهی 127 است.
- «OK» را به باینری بنویسید. جواب: O برابر 79 و K برابر 75 است، یعنی 01001111 01001011.
پرسشهای متداول
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 بیت میدهند.