یکی از بزرگترین ضعفهای اعداد باینری، طولانی بودن بیش از حد رشتهی باینری مربوط به اعداد دهدهی بزرگ است. در سیستمهای دیجیتالی عظیم مثل کامپیوترها، استفاده از اعداد باینری ۸، ۱۶ و حتی ۳۲ رقمی بسیار رایج است؛ اما خواندن و نوشتن تعداد زیادی عدد باینری ۱۶ یا ۳۲ بیتی، بدون پیش آمدن هیچ خطایی عملاً غیرممکن خواهد بود. یکی از روشهای مرسوم برای غلبه بر این مشکل، دستهبندی اعداد باینری در گروهها یا مجموعههای چهار بیتی و در نهایت استفاده از اعداد هگزادسیمال (Hexadecimal) است.
سیستم شمارهگذاری هگزادسیمال و یا به اختصار «هگز» (Hex)، همان دستگاه اعداد مبنای ۱۶ است. این سیستم شمارهگذاری به علت فرمت تقریباً فشردهای که دارد، گزینهی بسیار مناسبی برای نمایش رشتههای باینری طولانی به شمار میرود. همچنین درک آن نسبت به رشتههای باینری متشکل از صفر و یکها آسانتر است.
از آنجایی که اعداد هگزادسیمال اعدادی در مبنای ۱۶ هستند، برای نمایش این اعداد میتوان از ۱۶ رقم متفاوت و از اعداد ۰ تا ۱۵ استفاده کرد. واضح است که اعداد دهدهی ۱۰، ۱۱، ۱۲، ۱۳، ۱۴ و ۱۵ دو رقم دارند. این موضوع در حالت عادی مشکلی ایجاد نمیکند، اما به طور مثال اگر عدد ۱۰ را در مبنای ۱۶ بنویسیم، نمیتوان تشخیص داد که این عدد ۱۰ دهدهی است یا ۲ باینری. برای حل این مشکل مقادیر ده، یازده، دوازده، سیزده، چهارده و پانزده را به ترتیب با حروف بزرگ انگلیسی E، D، C، B، A و F نمایش میدهیم.
پس برای نمایش معادل اعداد باینری یا دهدهی در سیستم شمارهگذاری هگزادسیمال، از ارقام ۰ تا ۹ و حروف بزرگ A تا F استفاده میشود. همانند دستگاه اعداد باینری و دهدهی، در اعداد هگزادسیمال نیز سمت راستترین رقم، کم ارزشترین رقم است.
همانگونه که قبلاً اشاره شد، استفاده از رشتههای باینری طولانی بسیار دشوار است. اما با دستهبندی این اعداد باینری بزرگ به گروههای کوچکتر و با تعداد ارقام مساوی، فهم و نوشتن آنها راحتتر خواهد بود. به عنوان مثال، کار کردن با ۱۱۱۱۲ ۱۱۰۰ ۰۱۰۱ ۱۱۰۱ به جای ۱۱۰۱۰۱۰۱۱۱۰۰۱۱۱۱۲ بسیار آسانتر است.
همانند دستگاه اعداد دهدهی که برای درک آسانتر اعداد چند میلیونی و یا چند میلیاردی، از سمت راست ارقام را سه تا سه تا جدا کرده و گروهبندی میکنند، در سیستمهای دیجیتالی نیز از روش مشابهی استفاده میکنیم.
اعداد هگزادسیمال سیستم پیچیدهتری نسبت به اعداد باینری یا دهدهی داشته و در کامپیوترها و آدرسدهی مکانهای حافظه پرکاربردترند. با تقسیم یک عدد باینری به گروههای ۴ بیتی، هر دستهی ۴ بیتی میتواند مقداری بین ۰۰۰۰ باینری (صفر) تا ۱۱۱۱ باینری (پانزده) داشته باشد که جمعاٌ ۱۶ حالت مختلف را ایجاد میکند.
از اولین بخش آموزشهای مربوط به اعداد باینری به یاد داریم که هر دستهی ۴ بیتی یک «نیبل» نامیده میشود. همچنین میدانیم به منظور تولید یک عدد هگزادسیمال به حداقل ۴ بیت نیازمندیم، لذا هر رقم هگز را میتوان به عنوان یک نیبل و یا نصف بایت فرض کرد. به همین شکل برای تولید یک بایت کامل به دو رقم هگزادسیمال از ۰۰ تا FF نیاز است.
به دلیل اینکه عدد ۱۶ در دستگاه دهدهی توان چهارم عدد ۲ است (به عبارتی ۲۴)، ارتباط مستقیمی بین عدد ۲ و ۱۶ وجود دارد که در نتیجه یک رقم هگز ارزشی معادل چهار رقم باینری دارد. در فرمول کلی نمایش دستگاههای اعداد، مقدار q مربوط به دستگاه اعداد هگزادسیمال ۱۶ است.
به علت وجود این رابطه، میتوان چهار رقم باینری را در قالب یک رقم هگزادسیمال نشان داد. این موضوع تبدیل اعداد باینری و هگزادسیمال به یکدیگر را بسیار آسان کرده و نمایش اعداد باینری بزرگ با تعداد ارقام بسیار کمتر و به صورت هگزادسیمال را ممکن میکند.
جدول زیر معادل باینری و هگزادسیمال اعداد دهدهی ۰ تا ۱۷ را نشان میدهد. اعداد دهدهی ۰ تا ۹ در دستگاه هگزادسیمال نیز به همان صورت نوشته میشوند. اما معادل هگزادسیمال اعداد دهدهی ۱۰ تا ۱۵ حروف بزرگ A تا F است.
عدد هگزادسیمال | عدد باینری ۴ بیتی | عدد دهدهی |
۰ | ۰۰۰۰ | ۰ |
۱ | ۰۰۰۱ | ۱ |
۲ | ۰۰۱۰ | ۲ |
۳ | ۰۰۱۱ | ۳ |
۴ | ۰۱۰۰ | ۴ |
۵ | ۰۱۰۱ | ۵ |
۶ | ۰۱۱۰ | ۶ |
۷ | ۰۱۱۱ | ۷ |
۸ | ۱۰۰۰ | ۸ |
۹ | ۱۰۰۱ | ۹ |
A | ۱۰۱۰ | ۱۰ |
B | ۱۰۱۱ | ۱۱ |
C | ۱۱۰۰ | ۱۲ |
D | ۱۱۰۱ | ۱۳ |
E | ۱۱۱۰ | ۱۴ |
F | ۱۱۱۱ | ۱۵ |
(۱+۰) ۱۰ | ۰۰۰۱ ۰۰۰۰ | ۱۶ |
(۱+۱) ۱۱ | ۰۰۰۱ ۰۰۰۱ | ۱۷ |
… |
به عنوان مثال با استفاده از جدول بالا، معادل هگزادسیمال عدد باینری ۱۱۱۱۲ ۱۱۰۰ ۰۱۰۱ ۱۱۰۱ به صورت D5CF خواهد بود و مسلماً خواندن و نوشتن آن از عدد قبلی که رشتهای طولانی از ۰ و ۱ ها بود راحتتر است. همانگونه که میبینیم با به کار بردن دستگاه اعداد هگزادسیمال، تعداد ارقام بسیار کمتر شده و احتمال رخ دادن خطا نیز کاهش مییابد.
مهمترین ویژگی دستگاه اعداد هگزادسیمال، داشتن ۱۶ رقم شمارشی متفاوت از ۰ تا F است. در اینگونه اعداد هر رقم وزن مخصوص به خود را دارد که با شروع از کم ارزشترین رقم (LSB) در سمت راست عدد، وزن هر رقم ۱۶ برابر رقم قبلی است. به منظور متمایز کردن اعداد هگزادسیمال از اعداد دهدهی، قبل از این اعداد نماد «#» (هَش) یا «$» (علامت دلار) قرار میدهیم؛ مثلاً D5CF# یا D5CF$. البته از آنجایی که اعداد هگزادسیمال مبنای ۱۶ دارند، با نوشتن زیرنویس ۱۶ به صورت D5CF۱۶ نیز میتوان آنها را نشان داد.
تا بدین جای کار میدانیم چگونه چهار رقم باینری را به یک عدد هگزادسیمال تبدیل کنیم. اما اگر بیشتر از چهار رقم باینری داشتیم چه باید کرد؟ شمارش هگزادسیمال بعد از حرف آخر F چگونه است؟ بدیهیترین پاسخ، شروع دوباره با یک دستهی چهار بیتی دیگر مانند زیر است:
۰…to…۹, A, B, C, D, E, F, 10… to …۱۹, ۱A, 1B, 1C, 1D, 1E, 1F, 20, 21, ….
LSB | عدد هگزادسیمال | MSB | ||||||
۱۶۰ | ۱۶۱ | ۱۶۲ | ۱۶۳ | ۱۶۴ | ۱۶۵ | ۱۶۶ | ۱۶۷ | ۱۶۸ |
۱ | ۱۶ | ۲۵۶ | ۴k | ۶۵k | ۱M | ۱۶M | ۲.۶G | ۴.۳G |
اگر تعداد ارقام عدد باینری ۴، ۸، ۱۲، ۱۶ و در حالت کلی مضرب صحیحی از چهار باشد، تبدیل باینری و یا معادل دهدهی آن به هگزادسیمال بسیار راحت خواهد بود. اما اگر تعداد ارقام باینری غیر از این باشد، میتوانیم با افزودن تعداد مناسبی صفر در سمت چپ پر ارزشترین بیت (MSB)، تعداد ارقام را به اندازهی دلخواه افزایش دهیم.
به عنوان مثال عدد باینری ۱۱۰۰۱۰۱۱۰۱۱۰۰۱۲ چهارده رقم دارد. حال میخواهیم معادل هگزادسیمال این عدد را بیابیم. اما تعداد ارقام باینری برای نمایش در قالب سه رقم هگزادسیمال زیاد است و البته برای نمایش در قالب چهار رقم هگزادسیمال نیز کم است. برای حل این مشکل، در سمت چپ MSB دو تا صفر اضافه میکنیم تا یک دستهی چهاربیتی دیگر به وجود بیاید. افزودن این صفرها تغییری در مقدار عدد باینری ایجاد نمیکند اما از طرف دیگر یافتن معادل هگزادسیمال عدد را آسانتر میکند.
۱۰۰۱ | ۱۱۰۱ | ۰۰۱۰ | ۰۰۱۱ | عدد باینری |
۹ | D | ۲ | ۳ | عدد هگزادسیمال |
بزرگترین مزیت اعداد هگزادسیمال، فشردگی آنها به دلیل استفاده از مبنای ۱۶ در شمارهگذاری است. لذا معمولاً تعداد ارقام استفاده شده در یک عدد هگزادسیمال کمتر از تعداد ارقام معادل باینری یا دهدهی همان عدد است. همچنین، تبدیل اعداد باینری و هگزادسیمال به یکدیگر بسیار راحت است.
عدد باینری ۱۰۱۰۲ ۱۱۱۰ را به معادل هگزادسیمال آن تبدیل کنید.
عدد باینری = ۱۱۱۰۱۰۱۰۲ | |||
از سمت راست بیتها را چهارتا چهارتا جدا کنید. | |||
۱۰۱۰ | ۱۱۱۰ | = | |
معادل دهدهی هر یک از گروههای چهار بیتی را حساب کنید: | |||
(دهدهی) | ۱۰ | ۱۴ | = |
با استفاده از جدول قبل معادل هگزادسیمال اعداد را پیدا کنید: | |||
(هگزادسیمال) | A | E | = |
و در آخر، معادل هگزادسیمال عدد باینری برابر است با:
#EA۱۶ |
معادل باینری و دهدهی عدد هگزادسیمال ۳FA7۱۶ را بیابید. مبنای هر عدد را نیز به دقت مشخص کنید.
#۳FA7۱۶
= ۰۰۱۱ ۱۱۱۱ ۱۰۱۰ ۰۱۱۱۲
= (۸۱۹۲ + ۴۰۹۶ + ۲۰۴۸ + ۱۰۲۴ + ۵۱۲ + ۲۵۶ + ۱۲۸ + ۳۲ + ۴ + ۲ + ۱)
= ۱۶,۲۹۵۱۰
معادل باینری عدد دهدهی ۱۶۲۹۵ به صورت زیر است:
۰۰۱۱ ۱۱۱۱ ۱۰۱۰ ۰۱۱۱۲
در سیستمهای دیجیتالی و کامپیوتری برای افزایش خوانایی و تبدیل رشتههای بزرگی از اعداد باینری به دستههای چهار رقمی، از سیستم شمارهگذاری هگزادسیمال یا هگز استفاده میشود. لغت لاتین Hexadecimal به معنای شانزده است و علت این نامگذاری، استفاده از ۱۶ رقم مختلف ۰ تا ۹ و A تا F در این سیستم شمارهگذاری است.
برای تبدیل اعداد باینری به اعداد هگزادسیمال، ابتدا باید عدد باینری را در گروههای چهار رقمی دستهبندی کنیم. این گروهها میتوانند مقداری بین ۰۱۰ (۰۰۰۰۲) تا ۱۵۱۰ (۱۱۱۱۲) داشته باشند که همان معادل هگز ۰ تا F است.