نمايش داده ها
نمايش داده ها
یک برنامه نویس باید از چگونگی پیاده سازی انواع داده اصلی در سخت افزار مطلع باشد. نوع های داده پایه عبارتند از اعداد صحیح، اعداد ممیز شناور و کاراکترها که مستقیما در سخت افزار همراه با مجموعه ای از دستورالعمل طراحی می شوند. نوع های داده انتزاعی توسط برنامه نویس با استفاده از این نوع های پایه تعریف می شوند.
اعداد صحیح
کاراکترها
نحوه نگهداری اطلاعات در حافظه را نمایش داده (Data Representation) می گویند. روش های نگهداری داده ها بسته به نوع آنها متفاوت است. اطلاعات معمولا به دو صورت ارائه می شوند: عددی ( صحیح و ممیرشناور) و حرفی.
میزان فضای درنظر گرفته در حافظه برای نگهداری داده را طول نمایش می نامند.
اعداد صحیح
اعداد صحیح باینری به دو شکل دیده می شوند:
1. اعداد صحیح بدون علامت (unsigned Integer) که شامل اعداد صحیح غیر منفی هستند.
2. اعداد صحیح علامت دار (signed Integer) که می توانند مثبت یا منفی باشند.
نمایش اعداد صحیح بدون علامت
اعداد صحیح بدون علامت همیشه بزرگتر یا مساوی با صفر هستند، مانند سن یا قد، یعنی هیچوقت مقدار منفی نمی گیرند. کلیه بیت های طول نمایش در این اعداد به داده اختصاص داده می شود. کمترین مقدار ممکن یک عدد صحیح بدون علامت وقتی است که کلیه بیت ها صفر باشد که معادل عدد 0 است. در بزرگترین عدد صحیح بدون علامت کلیه بیت های عدد یک است.
مثال. بزرگترین و کوچکترین عدد صحیح بدون علامت با 8 بیت طول.

جدول تعداد بيت ها و محدوده مقادير ممکن داده های عددی صحيح بدون علامت
Storage Type | Bits | Range (low - high) |
|---|---|---|
| Unsigned byte | 8 | 0 ... 255 |
| Unsigned word | 16 | 0 ... 65,535 |
| Unsigned doubleword | 32 | 0 ... 4,294,967,295 |
| Unsigned quadword | 64 | 0 ... 18,446,744,073,709,551,615 |
نمایش اعداد صحیح علامت دار
اعداد صحیح علامت دار می نوانند مثبت یا منفی باشند. برای تشخیص علامت عدد یکی از بیت های طول نمایش را به بیت علامت اختصاص می دهند. روش های متعددی برای نمایش علامت عدد وجود دارد در کلیه این روش ها با ارزش ترین بیت (سمت چپ ترین بیت) را به عنوان بیت علامت (sign bit) درنظر می گیرند. اگر این بیت صفر باشد عدد مثبت و اگر 1 باشد عدد منفی است.

روش نمایش مکمل2
کامپیوترهای امروزی روشی به نام فرم مکمل 2 (2’s Complement) را برای نمایش اعداد صحیح علامتدار استفاده می کنند که روش خوبی برای ذخیره اعداد صحیح علامت دار به صورت باینری است. در این روش از مکمل گیری برای منفی کردن استفاده می شود.
مکمل2 یک عدد در دو مرحله بدست می آید:
1. پیداکردن مکمل1 عدد
2. اضافه کردن 1 واحد به نتیجه مرحله اول
مثال. برای بدست آوردن مکمل2 عدد 56 ابتدا مکمل1 آن محاسبه سپس یک واحد به آن اضافه می شود.
56 = 00111000 b
1’s complement = 11000111 مکمل یک عدد ، صفر به یک و یک به صفر تبدیل می شود
2’s Complement = 11000111+1 =11001000 مکمل دوعدد 56
یک عدد صحیح مثبت در فرم مکمل2 مانند اعداد بدون علامت نمایش داده می شوند یعنی در مبنای 2 نوشته شده و به اندازه کافی صفر در سمت چپ آن اضافه می شود تا طول نمایش را بسازد.
برای نمایش یک عدد صحیح منفی در فرم مکمل2، ابتدا عدد را به مبنای 2 برده، سمت چپ آن صفر اضافه می شود تا طول نمایش را بسازد سپس مکمل 2 عدد گرفته می شود.
مثال. نمایش عدد +1116 به فرم مکمل2 در 16بیت به صورت زیر نمایش داده می شود.
+1116 = 0000 0100 0101 1100b =045C h
مثال: نمایش عدد -97 به فرم مکمل2 در 8 بیت.
Decimal: -97
Binary: 01100001 b
2’Complement: 10011111 b = 9F h
عمل مکمل گیری مانند عمل منفی کردن است، به همین دلیل با گرفتن مکمل2 از یک عدد منفی به عدد مثبت مطابق آن می رسیم و برعکس.
مثال. بنابراین عدد 11001000 b نمایش عدد 56- در مثال اول است.
وقتی عددی به فرم مکمل 2 نمایش داده شده است، برای اعداد مثبت بیت علامت باید صفر باشد یعنی در مبنای هگز آخرین رقم عدد بین 0 تا 7 باشد. عدد منفی به بیت علامت 1 ختم می شود و می تواند ارقام بین 8 تا F را در آخرین رقم هگز داشته باشد. وقتی علامت عدد مکمل2 تشخیص داده شد برای پیدا کردن عدد در مبنای 10 در اعداد مثبت کافی است به مبنای 10 برده شود و برای اعداد منفی ابتدا مکمل2 گرفته شود سپس به مبنای 10 برده شود.
مثال. 0D43h یک عدد مکمل 2 با طول 16 بیت است که معادل مبنای 10 آن عدد 3395+ است.
مثال. B2EBh نمایش یک عدد صحیح در سیستم مکمل 2 است معادل آن در مبنای 10 به صورت زیر بدست می آید.
B2EB h = 1011 0010 1110 1011 b بیت علامت یک است یعنی عدد منفی است
2’Complement : 0100110100010101 مکمل دو عدد محاسبه می شود و تبدیل به مبنای 10 می شود
= 19733 ==> -19733
نمایش مکمل دو باعث می شود اعداد منفی یکی بیشتر از اعداد مثبت باشند (وقتی همه بیت ها 1 است).
مثال. بزرگترین و کوچکترین عدد صحیح علامت دار با 8 بیت طول.

جدول تعداد بيت ها و محدوده مقادير ممکن داده های عددی صحيح علامت دار به روش مکمل2
Storage Type | Bits | Range (low - high) |
|---|---|---|
| Signed byte | 8 | -128...+127 |
| Signed word | 16 | -32,768...+32,767 |
| Signed doubleword | 32 | -2,147,483,648...+2,147,483,647 |
| Signed quadword | 64 | -9,223,372,036,854,775,808 +9,223,372,036,854,775,807... |
نکته. قبل از عمل مکمل گیری با اضاقه کردن صفر سمت چپ تعداد بیت های عدد حتما باید برابر طول نمایش باشد. در غیر اینصورت عدد حاصل اشتباه است.
نکته. اگر طول بیت ها برابر با طول نمایش باشد و نتوان آنرا افزایش داد حاصل اشتباه می شود.
نکته. از مبنای 16 برای ساده تر بیان کردن اعداد مبنای 2 استفاده می شود.
نکته. در روش مکمل2 تنها یک نمایش برای صفر وجود دارد و آن وقتی است که کلیه بیتها صفر باشد.
نکته. محاسبات مکمل2 بسادگی جمع و تفریق اعداد باینری انجام می شود.
کاهش و افزایش طول داده
در اسمبلی کلیه داده ها اندازه مشخص شده ای دارند. گاهی ناچار به تغییر اندازه داده هستیم. برای کاهش اندازه داده کافی است بیت های با ارزش حذف شوند. این روش برای اعداد بدون علامت و علامت دار کار می کند. قاعده کلی این است که برای اعداد بدون علامت کلیه بیت های حذف شده باید صفر باشند. و برای اعداد علامت دار بیت های حذف شده باید همگی یا 1 و یا همگی 0 باشند. البته اگر عدد را نتوان به طرز صحیح در اندازه کوچکتر نمایش داد کاهش اندازه درست کار نمی کند.
افزایش داده پیچیده تر از کاهش است. عدد هگز FF را اندازه بگیرید. گسترش آن بستگی دارد که آن را چطور تفسیر کنیم. اگر آن را یک عدد بدون علامت درنظربگیریم(یعنی عدد 255)، به صورت 00FF گسترش داده می شود و اگر علامت دار باشد(یعنی 1-) به صورت FFFF. به طور کلی برای گسترش اعداد بدون علامت کلیه بیت های جدید عدد گسترش یافته صفر می شوند ولی برای گسترش یک عدد علامت دار باید بیت علامت را بسط داد، به این معنا که.بیت های جدید بیت علامت را در خود کپی می کنند.