سيستم های عدد نويسی

درحالیکه محاسبات روزمره ما در مبنای 10 انجام می گیرد کامپیوتر کلیه محاسبات را در مبنای 2 انجام می دهد. سیستم عددی 16 برای نمایش کوتاهتر اعداد باینری استفاده می شود. برای درک بهتر خیلی مواقع نیاز به تبدیل مبنای 10، 2 یا 16 به یکدیگر هستیم.

سیستم عددی اعشاری
سیستم عددی دودوئی
سیستم عددی هگزادسیمال
اعداد ممیزشناور

در کارهای روزمره از سیستم عددی اعشاری یا مبنای 10 استفاده می کنیم. ولی برای سادگی سخت افزار، کلیه اطلاعات به شکل بیت های خاموش و روشن (یا صفر و یک) رمز می شوند. بنابراین سیستم عددی دودویی که تنها شامل ارقام صفر و یک است برای این منظور بسیار مناسب است. عدد 1 نشان دهنده ولتاژ بالا یا روشن و عدد صفر بیان کننده ولتاژ پایین یا خاموش است.

نکته. برای تعیین مبنای عدد یک حرف کوچک در انتهای آن قرار می گیرد. مثال 45h به معنی عدد 45 در مبنای شانزده است. 11010011b یعنی این عدد در مبنای 2 است. این روشی است که اسمبلر اعداد را در برنامه های اسمبلی تشخیص می دهد.

 

سیستم عددی اعشاری

اعداد اعشاری (Decimal) یا مبنای 10 از ارقام صفر تا 9 تشکیل می شوند. در یک عدد هر رقم به توانی از 10 مرتبط است که نشان دهنده ارزش مکانی رقم در عدد است.

 

234 = 2 × 102 + 3 × 101 + 4 × 100

     = 200 + 30 + 4

 

 

سیستم عددی دودوئی

سیستم باینری (binary) یا مبنای 2 بر اساس تنها دو وضعیت است: روشن (1) یا خاموش (0) است. یک رقم باینری یک بیت نامیده می شود (در واقع کلمه Bit مخفف Binary Digit است).

تبدیل باینری به دهدهی

مقدار یک عدد باینری بر اساس بیت های 1 و ارزش مکانی آنها بدست می آید. ارزش مکانی هر بیت توانی از 2 است. برای محاسبه مقدار اعشاری یک عدد باینری، کافی است هر رقم از راست به چپ در ارزش مکانی اش ضرب شده سپس کلیه اعداد با هم جمع شوند.

مثال 1. تبدیل عدد 11001b به مبنای 10.

Binary: 11001

Decimal: 1 × 24 + 1 × 23 + 0 × 22 + 0 × 21 + 1 × 20

    = 16 + 8 + 0 + 0 + 1

    = 25

 

مثال 2. تبدیل عدد 10010000b به مبنای 10.

 

Binary: 1 0 0 1 0 0 0 0

Decimal: 1×27 + 0×26 + 0×25 + 1×24 + 0×23 + 0×22 + 0×21 + 0×20

    =128 + 0 + 0 + 16 + 0 + 0 + 0 + 0

    =144

 

تبدیل دهدهی به باینری

چندین روش برای تبدیل اعداد اعشاری به باینری وجود دارد. یک روش متداول تقسیم های متوالی بر 2 است. به این ترتیب که عدد اعشاری بر 2 تقسیم می شود، باقیمانده بعنوان رقم باینری نگهداشته و خارج قسمت مجدد بر 2 تقسیم می شود این عمل تا زمانی که خارج قسمت صفر شود ادامه پیدا می کند.

مثال. تبدیل عدد 43 به مبنای 2

عددخارج قسمتباقیمانده
43 ÷ 2211
21 ÷ 2101
10 ÷ 250
5 ÷ 221
2 ÷ 210
1 ÷ 201

با قرار دادن باقیمانده های تقسیم از پایین به بالا عدد باینری 101011 بدست می آید.

روش دیگر برای تبدیل مبنای 10 به 2 استفاده سری توان های 2 است. به این صورت که بزرگترین عدد در سری زیر را که از 43 کوچکتر است را از آن کم می کنیم و این عمل را مجدد ادامه می دهیم. زیرهر عددی که در تفریق شرکت می کند 1 می گذاریم و بقیه اعداد را صفر قرار می دهیم.

        
1286432168421
  101011

 

43-32=11

11-8=3

3-2=1

1-1=0

 

مشاهده می کنید که همان عدد باینری 101011 بدست می آید.

جمع اعداد باینری

جمع باینری ساده به صورت زیر محاسبه می شود:

 

0 + 0 = 0

0 + 1 = 1

1 + 1 = 10

1 + 1 + 1 = 11

 

برای جمع دو عدد باینری کافی است بیت به بیت از سمت راست به چپ عمل جمع انجام شود. رقم نقلی حاصل از هر ستون در جمع ستون بعدی اعمال می شود.

   11 
 11011
+00001
 11100

 

سیستم عددی هگزادسیمال

اسمبلر و دیباگر برای نمایش اعداد باینری به صورت مختصر روش هگزادسیمال (Hexadecimal) یا به طور خلاصه هگز را بکار می برند. اعداد هگز مبنای 16 را استفاده می کنند و از 16 رقم صفر تا 15 تشکیل شده اند. برای نمایش ارقام دورقمی بعد از 9 از حروف A تا F استفاده می شود. به عبارت دیگر 16 رقم هگز شامل 0, 1, 2, 3, 4, 5, 6, 7, 8, F, E, D, C, B, A, 9 است (A=10، B=11، C=12، D=13، E=14 وF=15 ).

هر رقم هگز معادل چهار بیت باینری یا یک نیبل (nibble) است. پس هر رقم هگز معادل یک نیبل است. دو نیبل یک بایت(Byte) را می سازد بنابراین هر بایت می تواند دو رقم هگز را نشان بدهد. مقدار یک بایت می تواند از 00000000 تا 11111111 باینری، 00 تا FF در هگز و 0 تا 255 در مبنای 10 باشد.

تبدیل باینری به هگز

برای نمایش یک عدد باینری به هگز ابتدا عدد را از راست به چپ به گروه های چهاربیتی تقسیم کنید (اگر آخرین گروه سمت چپ کمتر از چهار بیت بود صفر اضافه می شود)، سپس هر بخش به یک رقم هگز تبدیل می شود.

مثال. تبدیل عدد 000111100000011110110100b به هگز

000111100000011110110100
1E07B4

تبدیل هگز به باینری

برای تبدیل هگز به باینری کافی است معادل باینری هر رقم هگز قرار داده شود.

مثال. تبدیل عدد 60794h به باینری.

 

Hex: 6 0 7 9 4

Binary: 0110 0000 0111 1001 0100

 

توجه کنید که صفرهای ابتدای چهار بیت اهمیت دارند. اگر این صفرها برای ارقام میانی قرار نگیرند حاصل اشتباه است.

تبدیل اعشاری به هگز

برای تبدیل دسیمال به هگز مانند باینری تقسیم های متوالی بر 16 انجام می شود.

مثال. تبدیل عدد 589 به هگز

عددخارج قسمتباقیمانده
589 ÷ 163613
36 ÷ 1624
2 ÷ 1602

با قرار دادن باقیمانده های تقسیم از پایین به بالا عدد باینری 24D بدست می آید (به جای عدد 13 حرف D قرار می گیرد).

تبدیل هگز به اعشاری

ارزش هر رقم هگز با توانی از 16 مشخص می شود. برای تبدیل اعداد از مبنای 16 به 10 هر رقم در ارزش مکانی اش ضرب می شود.

مثال. تبدیل عدد 3BA4h به مبنای 10.

 

Hex : 3BA4

Decimal: 3×163 + 11×162 + 10×161 + 4× 160

     = 3×4096 + 11×256 + 10×16 + 4×1

     = 15268

 

جمع اعداد در هگزادسیمال

چند جمع ساده در مبنای 16.

 

7 + 3 = A

6 + 7= D

F + 1 = 10

10 + 30 = 40

F + F = 1E

38 + 18 = 50

FF + 1 = 100

 

جمع دو عدد هگز

1 1 7 E C 6 + 3 4 0 A B 2 D 0

 1 1 
 7EC6
+340A
 B2D0

 

6 + A = 6 + 10 = 16 => 10h

C + 0 + 1 = 12 + 0 + 1 = 13 => Dh

E + 4 = 14 + 4 = 18 => 12h

7 + 3 + 1 = 11 => Bh

 

 

اعداد ممیزشناور

برای نمایش کلیه اعداد حقیقی در فرم باینری از روش ممیز شناور استفاده می شود. نقطه اعشار می تواند در طول عدد حرکت کند به همین علت ممیز شناور نامیده می شوند. از نماد علمی برای نمایش این اعداد استفاده می شود. با حرکت ممیز به سمت راست توان 10 را افزایش و به سمت چپ توان 10 را کاهش می دهد.

مثال. عدد 523.0 به صورت علمی می تواند به صورت های 523.0×100، 52.30×101، 5.230×102 نوشته شود.

البته ممیزشناور روش تقریبی برای یک عدد حقیقی است زیرا اعدادی مانند عدد پی ...3.14159265 انتهایی ندارد و بینهایت بیت برای نمایش آن نیاز می شود.

یک عدد ممیزشناور شامل یک قسمت صحیح و یک قسمت کسری است. بخش صحیح و کسر هرکدام جداگانه باید به باینری تبدیل شود. بخش صحیح مانند اعداد صحیح با تقسیم های متوالی بر 2 به باینری تبدیل می شود.

مثال. 34.890625 شامل بخش صحیح 34 و بخش کسر .890625 است. معادل باینری عدد 34 عدد 100010 b است.

برای تبدیل قسمت کسر به جای تقسیم از ضرب های متوالی بر دو استفاده می شود. هر بار قسمت کسر دوباره در 2 ضرب می شود تا وقتی که حاصل به 1.0 برسد. البته ممکن است گاهی این اتفاق نیافتد بنابراین عمل ضرب به تعداد بیت های مانتیس ادامه پیدا می کند ( 23 بیت برای دقت معمولی)

مثال. تبدیل بخش کسری 0.890625 به باینری که عدد 111001. می شود.

عددخارج قسمتباقیمانده
.890625 * 21.781251
.78125 * 21.56251
.5625 * 21.1251
.125 * 20.250
.25 * 20.50
.5 * 21.01

عدد 34.890625 به باینری می شود 100010.111001 یا 20×100010.111001