Slide
Slide

مطالب کمکی ریزپردازنده
نویسنده: مسئول فنی در
۱۵ آبان ۱۳۹۲
[ آخرین به روزرسانی در ۰۷ اسفند ۱۳۹۲ ]

1- اعداد ( منفی ) در کامپیوتر:

غالب ما در درس های مدارمنطقی، معماری کامپیوتر و یا برنامه نویسی کامپیوتر شنیده ایم که محاسبات و ذخیره اعداد در کامپیوتر به صورت دودویی (باینری )  است. اگر چنانچه هنوز نحوه ذخیره سازی اعداد مثبت و منفی و محدوده آن ها را نمی دانید ادامه مطلب را بخوانید.
اولین نکته ای که یک نفر دانشجوی کامپیوتر در مورد ذخیره اعداد در کامپیوتر باید بداند، فضای لازم برای یک عدد است. کامپیوتر مانند صفحه کاغذ شما نیست که هر عدد با هر چند رقمی را روی آن بنویسید و اگر تا انتهای صفحه جا نشد، بقیه آن را با فلش  ادامه دهید.
شما باید اول مشخص کنید که محدوده اعداد و نتایج حاصل از محاسبات شما چقدر است.
در کامپیوتر اعداد را می توانید به صورت بایت (Byte=8Bit) ، کلمه (word=16Bit) ، دو کلمه (DoubleWord=32Bit) ، چهار کلمه (QuadWord=16Bit) و بیشتر درصورت نیاز تعریف کنید.
وقتی شما یک متغیر عددی را به صورت بایت تعریف می کنید، کامپیوتر یک خانه از حافظه به اندازه 8 بیت به آن اختصاص می دهد. حال بیایید در مورد محدوده آن صحبت کنیم. اگر متغیر عددی شما بدون علامت و همواره مثبت باشد محدوده آن بین 00000000 تا 11111111 است. که به دهدهی عددی بین 0 تا 255 را می توانید در آن قرار دهید. اگر مقدار متغیر عددی شما بیشتر از این محدوده هستند شما باید برای آن فضای بیشتری مانند کلمه که 16 بیتی است در نظر بگیرید. در این صورت عدد شما می تواند بین 0000000000000000 تا 11111111111111111111 باشد، که به دهدهی عددی بین 0 تا 65535 می شود. البته همه شما می دانید برای راحتی اعداد را به جای باینری به هگزادسیمال یعنی مبنای 16 نشان می دهیم و به جای نوشتن 16 تا 0 یا 16 تا 1 آن را به صورت 4 رقم هگزادسیمال نشان می دهیم و در مبنای شانزده محدوده یک بایت بین 00 تا FF و محدوده یک کلمه بین 0000 تا FFFF می شود. ( تبدیل مبنا را در درس مدارمنطقی دیده اید.)

معادل دهدهی

عدد باینری بدون علامت

معادل

هگزادسیمال

0

0

0

0

0

0

0

0

0

00

1

1

0

0

0

0

0

0

0

01

2

0

1

0

0

0

0

0

0

02

11

1

1

0

1

0

0

0

0

0B

15

1

1

1

1

0

0

0

0

0F

54

0

1

1

0

1

1

0

0

36

125

1

0

1

1

1

1

1

0

7D

126

0

1

1

1

1

1

1

0

7E

127

1

1

1

1

1

1

1

0

7F

128

0

0

0

0

0

0

0

1

80

129

1

0

0

0

0

0

0

1

81

253

1

0

1

1

1

1

1

1

FD

254

0

1

1

1

1

1

1

1

FE

255

1

1

1

1

1

1

1

1

FF

 اما مسئله به اینجا ختم نمی شود، بلکه شما باید طرز ذخیره اعداد منفی را نیز بدانید. در مدرسه ما برای نمایش اعداد منفی از قراردادن علامت – در کنار آن استفاده می کنیم و به  آن روش نمایش " اندازه علامت" می گوئیم. اما در کامپیوتر اعداد به این صورت ذخیره نمی شوند، بلکه اعداد منفی به صورت متمم دو ذخیره می شوند. محاسبات نیز به صورت متمم دو انجام می شود.
یک متغیر بایتی که شامل 8 بیت است را برای ذخیره اعداد با علامت ( مثبت و منفی )  بررسی می کنیم. همانطور که در جدول زیر می بینید اعداد مثبت بین 0 تا 127 و اعداد منفی بین 1- تا 128- در مبنای دهدهی هستند و به بیان دیگر محدوده اعداد بین 128- تا 127+ است. این محدوده بدین معنی است که ما در اعداد یک بایتی با علامت نمی توانیم عددی بیشتر از 127+ و یا کمتر از 128- داشته باشیم.

معادل دهدهی

عدد باینری با علامت متمم دو

معادل

هگزادسیمال

0

0

0

0

0

0

0

0

0

00

1

1

0

0

0

0

0

0

0

01

2

0

1

0

0

0

0

0

0

02

11

1

1

0

1

0

0

0

0

0B

15

1

1

1

1

0

0

0

0

0F

54

0

1

1

0

1

1

0

0

36

125

1

0

1

1

1

1

1

0

7D

126

0

1

1

1

1

1

1

0

7E

127

1

1

1

1

1

1

1

0

7F

128-

0

0

0

0

0

0

0

1

80

127-

1

0

0

0

0

0

0

1

81

3-

1

0

1

1

1

1

1

1

FD

2-

0

1

1

1

1

1

1

1

FE

1-

1

1

1

1

1

1

1

1

FF

در نمایش روش متمم دو نمایش اعداد مثبت فرقی نمی کند و لی عدد منفی بصورت متمم دو ذخیره می شود. ( همانطور که می دانید برای بدست آوردن متمم دو یک عدد، ابتدا تمام بیتها را بر عکس و در انتها یکی به آن اضافه می کنیم. )
برای مثال برای ذخیره عدد 3- در کامپیوتر، متمم دو آن را ذخیره می کنند.

عدد 3 روی کاغذ دفتر ما

11

عدد 3 در یک مکان حافظه یک بایتی

00000011

متمم یک عدد 3

11111100

متمم دو عدد 3 ( که برای ذخیره 3- به کار میرود

11111101

شما می توانید برای اعداد منفی دیگر بین 1- تا 128- متمم دو آن را بدست آورید.
اگر اعداد و محاسبات شما از محدوده 128- تا 127+ بیشتر هستند، شما باید از فضای بزرگتر از یک بایت استفاده کنید. برای نمونه از ذخیره اعداد در فضای کلمه (word) که 16 بیت است استفاده کنید. در صورت استفاده از فضای کلمه برای تعریف یک عدد، محدوده اعداد بدون علامت بین 0 تا 65535 خواهند بود و اعداد  با علامت بین 32768- تا 32767+ می شوند. بیایید عدد 3- را در قالب یک کلمه نیز نشان دهیم.

عدد 3 روی کاغذ دفتر ما

11

عدد 3 در یک مکان حافظه یک کلمه ای word

0000 0000 0000 0011

متمم یک عدد 3

1111 1111 1111 1100

متمم دو عدد 3 ( که برای ذخیره 3- به کار میرود

1111 1111 1111 1101

 به ذخیره عدد 3  به صورت بایت و کلمه در حافظه دقت کنید. حال به ذخیره عدد 3- به صورت بایت و کلمه در حافظه دقت کنید. همانطور که می بینید در اعداد مثبت هر چه 0 پشت آن بگذاریم فرق نمی کنند و در اعداد منفی هر چه 1 پشت سر آن ها بگذاریم فرق نمی کنند، به این کار توسعه علامت Sign Extension می گویند.

نظرات کاربران
کاربر 1 :    
۱۴ فروردين ۱۳۹۳
۱۴ فروردين ۱۳۹۳
ذخیره اعداد اعشاری چگونه است همینطور اعشاری شناور ؟ ممنون


نظر بدهید

ایمیل شما پنهان می ماند.