Web Programming C++ SQL Server پایگاه داده ساختمان داده   صفحه اصلی
  زبان اسمبلي > سيستم های عدد نويسي  
 
 

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


درحالیکه محاسبات روزمره ما در مبنای 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 ÷ 2 21 1
21 ÷ 2 10 1
10 ÷ 2 5 0
5 ÷ 2 2 1
2 ÷ 2 1 0
1 ÷ 2 0 1

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

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

27 26 25 24 23 22 21 20
128 64 32 16 8 4 2 1
    1 0 1 0 1 1

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

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

      1 1  
  1 1 0 1 1
+ 0 0 0 0 1
  1 1 1 0 0

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

اسمبلر و دیباگر برای نمایش اعداد باینری به صورت مختصر روش هگزادسیمال (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 به هگز

0001 1110 0000 0111 1011 0100
1 E 0 7 B 4

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

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

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

Hex: 6 0 7 9 4
Binary: 0110 0000 0111 1001 0100

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

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

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

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

عدد خارج قسمت باقیمانده
589 ÷ 16 36 13
36 ÷ 16 2 4
2 ÷ 16 0 2

با قرار دادن باقیمانده های تقسیم از پایین به بالا عدد باینری 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  
  7 E C 6
+ 3 4 0 A
  B 2 D 0

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 * 2 1.78125 1
.78125 * 2 1.5625 1
.5625 * 2 1.125 1
.125 * 2 0.25 0
.25 * 2 0.5 0
.5 * 2 1.0 1

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


جدول توان های 2

جدول توان های 16 در مبنای 10

جدول اعداد 0 تا 15 به صورت باينري و هگز


دانلود PDF این درس


 


 

صفحه اصلی| درباره| تماس