X
تبلیغات
مقالات و جزوه های درسی رشته کامپیوتر - معماری کامپیوتر جلسه ششم

فصل سوم
نمایش اعداد و محاسباتی کامپیوتر

 

چکیده

- مقدمه

 - نمایش عددی و مکمل دو

- طراحی واحد محاسبه ,منطق

 - ضرب و تقسیم صحیح

 - اعداد اعشاری

 

نمایش عددی

- آنچه پیچیده به نظر می رسد:

اعداد منفی را چگونه نمایش دهیم

دامنه (Range) اعداد چیست؟

اگر یک عدد خارج از محدوده بود؟

در مورد اعداد منطقی و غیر منطقی چطور؟

سخت افزار چگونه این اعداد را جمع، تفریق،ضرب و تقسیم میکند؟ 

بیت ها و اعداد

بیتها فقط بیت هستند: هیچ معنای ذاتی ندارند.

- قراردادها رابطه بین بیتها و اعداد را تعیین می کنند.

- سخت افزار چگونه تشخیص می دهد که چه قراردادی در حال استفاده است؟

 Add $s1, $s2, $s3

 Addu $s1, $s2, $s3

علامت $s1،$s2 و $s3 چیست؟

 

نمایش عددی

 صحیح بدون علامت

 صحیح با علامت

 BCDدهدهی کد شده به باینری

ممیز ثابت

ممیز شناور

انواع دیگر داده:

- کاراکترها(اسکی و یونیکد)

 - پیکسل ها (گرافیک ها)

- گروهی از بیتها

 

صحیح بدون علامت

چرا صحیح بدون علامت؟

- دستیابی به حافظه PC, SP, RA,

In C, unsigned int-

 

چگونه نمایش می دهیم؟

- انگشتهای خود را بشمارید.

- مبنای اولیه سیستم اعداد

- دهدهی: 10 نماد مختلف: 0 1 2 3 4 5 6 7 8 9

 

  عدد= Image and video hosting by TinyPic

 

صحیح بدون علامت (مبنای اولیه سیستم اعداد)

 

- در حالت کلی، در یک سیستم عددی مبنای K

 

    عدد= Image and video hosting by TinyPic

 

 

 

- چه تعداد di متفاوت؟

- بزرگترین عدد کدامست؟

- کوچکترین عدد کدامست؟

مبناهای خاص:

- مبنای 2 (Binary)

- مبنای 8 (octal)

- مبنای 16(hexademical)

آنها چه تعداد نماد مختلف دارند؟

 

- چگونه می توان مبنای دو را به مبنای 8 و 16 تبدیل کرد؟

- مثال:

 010100=(0 *22+1 *21+0*20)*23+(1*22+0*21+0*20)

 =2*81+ 4 *80= 248

 

Image and video hosting by TinyPic

 

صحیح بدون علامت (BCD: binary coded decimal)

Image and video hosting by TinyPic

 

نمایش : 12710

- چه تعداد بیت برای BCD مورد نیاز است؟ برای دودویی چطور؟

- فضای ذخیره سازی بکارگرفته شده؟

 

ضمیمه:

- چگونه می توان carry را مشخص نمود؟

If ai+ bi >10” vs. If ai+ bi >2”

 

کدامیک برای کامپیوتر کاراتر است؟

 

صحیح با علامت (علامت مقدار)

-12: -(sign) 12(absolute value)

- یک بیت علامت مجزا

- یک مقدار

 

 

برای سخت افزار

- بیت علامت را کجا قرار دهیم؟چپ یا راست؟

- علامت حاصلجمع را چگونه تعیین می کنیم؟ (مثلا یک مرحله اضافی)

- علامت صفر چیست؟ مثبت یا منفی؟

 

مکمل 2

اعداد و نمایش آنها یکی نیست.

 

- نمایش عدد، یک قرارداد تعریف شده برای بیان آن است.

- یک عدد می تواند دارای نمایشهای متفاوتی باشد مثلا BCD مبنای 16، مکمل دو و غیره.

- مکمل دو: یک نوع از نمایش که بصورت زیر تعریف شده است:

 

 

Image and video hosting by TinyPic

 

مکمل دو

Image and video hosting by TinyPic

 

0

0000

1

0001

2

0010

3

0011

4

0100

5

0101

6

0110

7

0111

-8

1000

-7

1001

-6

1010

-5

1011

-4

1100

-3

1101

-2

1110

-1

1111

 


 

صحیح با علامت(مکمل دو)

مرجع: Katz: Contemporary Logic Design, p243 (برای 4 بیت )          Image and video hosting by TinyPic
 

چرا 1111 و 0000 همسایه اند؟

مفهوم بیت سوم چیست؟

علامت صفر چیست؟

کوچکترین عدد کدامست؟

بزرگترین عدد کدامست؟

 

 

نمایش یک عدد منفی -x

- از نمایش عدد X تا نمایش -x

 

هر bi را معکوس کرده، سپس با 1 جمع کنید. Image and video hosting by TinyPic

 

- اثبات درستی

 

 

میانبر:  از با ارزشترین بیت تا کم ارزشترین 1هر بیت را معکوس کنید و کم ارزشترین یک را 1 نگاه دارید.

 

Example: - (0100) = 1011 + 1 = 1100

Example: 10010 = 01100100 à 10011100 = -10010

 

گنجاندن اعداد کوچکتر در بیتهای بیشتر

چرا لازم است؟

- مقایسه یک integer با یک long integer : تغییر نوع

- بارگذاری یک بایت در یک کلمه

- برای اضافه کردن یک بخش فوری به یک عدد 32 بیتی

 

واحد محاسبه و منطق MIPS فقط با مقادیر موجود در رجیسترهای 32 بیتی کار می کند.

- چگونه می توان با اندازه های کوچکتر کار کرد؟

- در مورد اندازه های بزرگتر چطور؟

 

 

Example(2-bit): 10= 1 *(-21)+0 *20=-210

نمایش 2- مبنای 10 در 4 بیت کلمه: آیا می توانید آنرا انجام دهید؟ چه چیزی کشف می شود؟

 

تکرار بیت علامت در بیتهای دیگر(گسترش علامت)

 0010 -> 0000 0010
 1010 -> 1111 1010

   (1x(2^(-7) + 111 1010 = ? ) نکته! اثبات ؟

 

جمع : درست مانند دوران شیرین دبستان

    0110

   + 0001

    

تفریق : a-b=a+(-b)

- اعمال مکمل دو ساده است

 0111-0110= 0111

 +1010

 10001 

 

بنابراین  0111-0110= 0001

آیا شما مخصوصا بیتهای علامت را دستکاری نموده اید؟

 

 

 صبر کنید! یک بیت اضافی گم شده است!

  0111-0110= 0111 
    +1010 

     10001

Image and video hosting by TinyPic>

 

- از دیدگاه 1 بیت : 1-1=1+1=0

- بنابراین تا زمانیکه شماcarry  بوجود آمده بوسیله 1+1 (1 سبز) را در نظر نگرفته اید، درست انجام داده اید.

سئوالات:

- آیا شما یک جمع کننده و یک تفریق کننده دارید؟

- در مورد اعداد بدون علامت چطور؟(یک جمع کننده دیگر؟)

مزایای استفاده از مکمل 2

- تفریق می تواند از منطق مشترکی با جمع استفاده کند

- بیت علامت می تواند مانند یک بیت معمولی عدد رفتار کند

- اینها نکات زیرکانه ای هستند .

 

سرریزی

 جمع:

   0111   1111   
 + 0110       +1000  

  

 

علامت ورودی چیست؟

علامت خروجی چیست؟

- آیا امکان وقوع سرریزی در جمع یک عدد مثبت و یک عدد منفی وجود دارد؟

امکان وقوع سرریز با صفر وجود دارد؟

- اعمال A+B و A-B را ملاحظه کنید.

 

جمع

   0111   1111   
 + 0110      + 1000

    1101 10111

 

 

 

علامت ورودی چیست؟

علامت خروجی چیست؟

 

کشف سرریزی

سرریزی زمانی اتفاق می افتد که:

- جمع دو عدد منفی یک عدد مثبت بدهد.

- جمع دو عدد مثبت یک عدد منفی بدهد.

- یا یک عدد منفی را از مثبت تفریق کنیم و نتیجه منفی بگیریم

- یا یک عدد مثبت را از منفی تفریق کنیم و نتیجه مثبت بگیریم

 

در مورد جمع و تفریق اعداد بدون علامت چطور؟

 

کار CPU در برابر سرریزی چیست؟

نادیده بگیرد؟

- هیچ وقت نمی خواهد سرریزی آشکار شود

Addu, addiu, subu-  (MIPS:عدم تولید سریز)

- تولید یک تله که بر اساس آن برنامه نویس بتواند با آن کار کند.

- یک استثنا (وقفه)رخ دهد

کنترل به آدرس از پیش تعریف شده استثنا پرش کند

ذخیره آدرس مکان وقفه برای امکان بازگشت

جمع ، تفریق

 

دستورالعمل ها

سنجش

- اعداد بدون علامت

sltu: set on less than unsigned

sltiu: set on less than immediate unsigned

- اعداد با علامت

slt: set on less than

slti: set on less than immediate 

 

مثال: مقادیر $s0 و $s1 چیست؟

 $s0= 1111 1111 1111 1111 1111 1111 1111 1111

 $s1= 0000 0000 0000 0000 0000 0000 0000 0001

 (1) slt $t0, $s0, $s1 (2) sltu $t1, $s0, $s1

 

مثال

مقادیر $s0 و $s1 چیست؟

$s0= 1111 1111 1111 1111 1111 1111 1111 1111

$s1= 0000 0000 0000 0000 0000 0000 0000 0001

 

 پاسخ:

 

 slt $t0, $s0, $s1 --1 است  $t0 اگر هر دو با علامت باشند 

 

 sltu $t1, $s0, $s1 -- 0 است $t1 اگر هر دو بدون علامت باشند

 

دستورالعمل ها

بارگذاری/ذخیره سازی

lb: load byte-

lbu: load byte unsigned-

Example: lb $s1, 100($s2)

 مقادیر$s0  چیست

When memory[$s2+100] = 0000 0000?

When memory[$s2+100] = 0000 0001?

When memory[$s2+100] = 1111 1111?

Example: lbu $s1, 100($s2)

مقادیر$s1  چیست

when memory[$s2+100] = 1111 1111?

 

+ نوشته شده در شنبه نوزدهم مرداد 1387ساعت 12:55 توسط میلاد |