180 likes | 532 Views
معماری سیستم های کامپیوتری. مهدی ایل بیگی دانشگاه پیام نور دماوند. منبع. نام کتاب: معماری سیستم های کامپیوتری (فصل 4 تا 12) مولف: Morris Mano مترجم: دكتر قدرت سپیدنام مرجع کمکی: معماری کامپیوتر، مهندس حمید رضا مقسمی. مقدمه: سیستم نمایش اعداد.
E N D
معماری سیستم های کامپیوتری مهدی ایل بیگی دانشگاه پیام نور دماوند
منبع نام کتاب: معماری سیستم های کامپیوتری (فصل 4 تا 12) مولف: Morris Mano مترجم: دكتر قدرت سپیدنام مرجع کمکی: • معماری کامپیوتر، مهندس حمید رضا مقسمی
اطلاعاتي كه يك كامپيوتر با آن سر و كار دارد • داده ها • داده هاي عددي (اعداد طبيعي و حقيقي) • داده هاي غير عددي (حروف، علائم) • ارتباط بين عناصر داده اي • ساختمان هاي داده اي (ليست هاي پيوندي، درخت ها و...) • برنامه ها (دستورات)
نمايش عددي دادهها • دادههاي عددي • اعداد (طبيعي، حقيقي) • سيستم نمايش اعداد: • سيستم نمايشي كه در آن مكان هر رقم داراي وزن نيست (مثل سيستم اعداد يوناني). • سيستم هائي كه هر رقم در نمايش يك عدد داراي وزن است. • در اين سيستم به هر رقم نسبت به جايگاه آن يك وزن اختصاص مي دهيم. • سيستم هاي دهدهي، دودوئي و هگزادسيمال مثال هايي از اين سيستم ها هستند.
نمايش اعداد اعشاری • اعداد اعشاري را مي توان به دو صورت نمايش داد: • اعداد اعشاري با مميز ثابت. • اعداد اعشاري با مميز شناور. • نمايش اعداد دودوئي با روش مميز ثابت: X = xnxn-1xn-2 ... x1x0 . x-1x-2 ... x-m
نمايش اعداد اعشاری در مبنای دو • برای تبدیل یک عدد اعشاری به یک عدد باینری، ابتدا قسمت صحیح عدد را تقسیم متوالی بر 2 بصورت باینری تبدیل می نماییم و سپس قسمت اعشاری را به طور مکرر در 2 ضرب می کنیم و قسمت صحیح حاصلضرب را در هر مرحله به عنوان بیت مورد نظر برای قسمت اعشاری در نظر می گیریم. • مثال: عدد 12/748را به صورت اعشاری بنویسید. 12 = 1100 0.748 * 2 = 1.496 0.496 * 2 = 0.992 0.992 * 2 = 1.984 0.984 * 2 = 1.968 . . . 12.748 = (1100.1011)2
تبدیل اعداد اعشاری از مبنای 2 به 10 • برای تبدیل عدد اعشاری از مبنای 2 به مبنای 10 در نمایش ممیز ثابت، ابتدا عدد دهدهی معادل با قسمت صحیح را به روش قبل بدست می آوریم و سپس بیت های قسمت اعشاری را از چپ به راست، به ترتیب در 2-1، 2-2، 2-3، 2-4 و ... ضرب می کنیم و سپس حاصلضرب ها را با هم جمع می نماییم. مثال:
نمايش اعداد اعشاری بصورت ممیز شناور • اگر xعددي اعشاري باشد، نمايش نرمال آن چنين است: x = f* Base E f : fraction or mantissa (مانتيس) E : exponent (نما) Example: 125.3210 = 0.12532 * 103 mantissa - 125.3210 = - 0.12532 * 103 0.054610 = 0.546 * 10 –1
مثال هایی از نرمال سازی اعداد Example: 134.1510 = 0.13415 x 103 0.002110 = 0.21 x 10-2101.11B = .1011 x 23 or 1.011 x 22(hidden1)0.011B = .11 x 2-1 or 1.1 x 2-2(hidden1)AB.CDH= .ABCD x 162 0.00ACH= .AC x 16-2
1 sign bit 8 exponent 23 fraction 1 sign bit 11 exponent 52 fraction استاندارد IEEE 754 برای نمايش اعداد اعشاری ممیز شناور • اين استاندارد در اغلب كامپيوترها مورد استفاده است. • عدد اعشاري از نوع float داراي 32 بيت است. • بيت علامت نشان دهنده علامت عدد است ( 1: منفي و صفر: مثبت) • 23 بيت انتهايي نشان دهنده مانتيس است كه به صورت نرمال در آمده است. يعني رقم يك قبل از مميز آن نشان داده نمي شود. • 8 بيت مياني، نماي عدد را نشان مي دهد كه عدد 127به آن اضافه شده است تا توان منفی نداشته باشیم. • اعداد اعشاري double به صورت مشابهي در 64 بیت نگهداري مي شوند. • استاندارد 32 بیتی (Float) • استاندارد 64 بیتی (Double)
استاندارد IEEE 754 برای نمايش اعداد اعشاری ممیز شناور • در اعداد اعشاری double بدلیل اینکه قسمت توان 11 بیت می باشد، در نتیجه برای جلوگیری از منفی شدن این قسمت، توان را با 1023 جمع می نماییم. • در یک مانتیس نرمال شده همواره سمت چپ ترین بیت برابر با یک است در نتیجه از ذخیره سازی این بیت جلوگیری می شود. • حالات خاص: • اگر نما و مانتيس صفر باشند، عدد صفر است. • اگر نما حداكثر مقدار خود را داشته باشد و مانتيس صفر باشد، عدد بي نهايت است. • اگر نما حداكثر مقدار خود را داشته باشد و مانتيس غير صفر باشد، عدد “تعريف نشده” است. NaN = Not a Number
1 10000011 01111001100100000000000 مثال برای اعداد اعشاری ممیز شناور • ذخیره سازی عدد -23.6 را به صورت ممیز شناور نمایش دهید. (23.6)10 = (10111.10011001)2 = 1.011110011001 * 24 Normalized Mantissa = .011110011001 Exponent = 4 + 127 = 131 = 10000011 Sign Bit = 1 Negative
مثال برای اعداد اعشاری ممیز شناور • 0 1000 0011 0000 0000 0000 0000 0000 000 = 1.0 x 24 = 16 • 0 0011 0001 0000 0000 0000 0000 0000 000 = 1.0 x 2-78 = 3.3087e-24 • 0 1000 0001 0100 0000 0000 0000 0000 000 = 1.01 x 22 = 101 = 5 • 1 1000 0001 1010 0000 0000 0000 0000 000 = 1.101 * 22 = 110.1 = -6.5