410 likes | 756 Views
یَرفعُ اللهَ الذینَ آمَنوُا مِنکُم وَ الذینَ اوُتوالعِلم دَرَجَات. فصل اول سیستم اعداد. مدرس: رضا رمضانی. ترم 1-92. فصل اول. مطالب فصل مقادیر دودویی یا باینری واحدهای مختلف اندازهگیری حافظه نمایش اعداد منفی تبدیل مقادیر باینری به مبنای ده و برعکس
E N D
یَرفعُاللهَالذینَآمَنوُامِنکُموَالذینَاوُتوالعِلمدَرَجَاتیَرفعُاللهَالذینَآمَنوُامِنکُموَالذینَاوُتوالعِلمدَرَجَات فصل اول سیستم اعداد مدرس: رضا رمضانی ترم 1-92
فصل اول • مطالب فصل • مقادیر دودویی یا باینری • واحدهای مختلف اندازهگیری حافظه • نمایش اعداد منفی • تبدیل مقادیر باینری به مبنای ده و برعکس • نمایش مقادیر عددی در مبنای شانزده • نمایش مقادیر عددی در مبنای هشت • تبدیل مقادیر از مبنای ده به مبنای هشت و برعکس • تبدیل مقادیر از مبنای شانزده به مبنای ده و برعکس • تبدیل مقادیر از مبنای شانزده به مبنای هشت و برعکس
مبنای 10 و مبنای 2 • مبنای 10، اساس کار بشر • تعداد 10 عدد انگشت • مبنای 2، اساس کار کامپیوتر • سیگنال خاموش/روشن • تبدیل مبنای 10 به مبنای 2 • تقسیم متوالی عدد بر 2 • استفاده معکوس از باقیمانده های تولید شده • مثال: نمایش عدد 50 در مبنای 2
تبدیل مبنای 2 به مبنای 10 • ارزش مکانی رقم • سمت راست کم ارزش: اندیس 0 • سمت چپ پر ارزش • تبدیل از مبنای 2 به مبنای 10 • ضرب رقم در ارزش مکانی رقم2 • 20، 21، 22، 23، ...، n-12 • جمع مقادیر به دست آمده • مثال • عدد 11010
دیگر مثالها • تبدیل 37 به 100101 • تبدیل 1101101 به 109
جمع و تفریق اعداد مبنای 2 • مشابه مبنای 10 • رقم نقلی (Carry) • رقم قرضی (Borrow) • مثال • جمع عدد 10 با 3 در مبنای 2
جمع و تفریق در مبنای 2 • 17 + 20 • تفریق در مبنای 2
بایت • بیت • کوچکترین واحد حافظه • 0 یا 1 • مخفف Binary Digit • نمایش با b • بایت • 8 بیت پشت سر هم • بیت سمت راست: کم ارزشترین بیت (LSB) • بیت سمت چپ: پر ارزشترین بیت (MSB) • هر بایت 256 حالت مختلف دارد (28) • قرار دادن اعداد 0 تا 255 در یک بایت
مقادیر منفی • استفاده از بیت علامت • بیت سمت چپ، بیت علامت • 0: عدد مثبت • 1: عدد منفی • روش مکمل 1 • مزیت: تنها نیاز به یک مدار برای عمل جمع و تفریق است. • عیب: عیب وجود دو عدد 0+ و 0- • محدوده بین 127- تا 127+ • روش مکمل 2 • تبدیل حالت مثبت عدد به مبنای 2 • قرار دادن تعدادی 0 در سمت چپ عدد (تا تعداد ارقام مضربی از 8 شود) • محاسبه مکمل 1 عدد (تبدیل 0 به 1 و 1 به 0) • جمع عدد بدست آمده با عدد 1 • مزیت: تنها نیاز به یک مدار برای عمل جمع و تفریق است و نیز تنها یک عدد 0 وجود دارد.
مثال عدد منفی • تبدیل عدد 26- به مبنای 2 • ابتدا تبدیل 26 به مبنای 2 • سپس افزودن تعدادی بیت • سپس مکمل کردن عدد • در نهایت افزودن عدد 1 به مقدار به دست آمده • در مکمل 2، MSB همیشه 1 است.
مثال عدد منفی • تبدیل عدد 35- به مبنای 2 • ابتدا تبدیل 35 به مبنای 2 • سپس افزودن تعدادی بیت • سپس مکمل کردن عدد • در نهایت افزودن عدد 1 به مقدار به دست آمده
تبدیل عدد منفی مبنای 2 به مبنای 10 • مراحل • محاسبه مکمل 1 • افزودن عدد 1 به حاصل • بردن عدد به مبنای 10 • قرار دادن علامت – پشت عدد به دست آمده 11011101 00100010 00100011 35 -35
مثال از تفریق (جمع عدد منفی) • محاسبه مقدار 20-27 • معادل با (20-) + 27 10100 00010100 11101011 11101100
گروهبندیبیتها • بایت (Byte) • 8 بیت کنار هم • کلمه (Word) • 2 بایت کنار هم (16 بیت) • در برخی کامپیوتر 4 بایت است • بایت سمت راست: بایت مرتبه پایین • بایت سمت چپ: بایت مرتبه بالا • کلمه مضاعف (Double Word) • 4 بایت کنار هم (32 بیت) • Quad Word • 8 بایت کنار هم (64 بیت) • TenByte • 10 بایت کنار هم (80 بیت)
رقم نقلی و رقم قرضی • عملیات بیتی
مبنای 16 • اعداد 0 تا 15 • 0، 1، 2، 3، 4، 5، 6، 7، 8، 9 • A، B، C، D، E، F • تبدیل عدد از مبنای 10 به مبنای 16 • تقسیم متوالی عدد بر عدد 16 • مثال: عدد 176 را به مبنای 16 ببرید. • حاصل: AE • مثال: عدد 3740 را به مبنای 16 ببرید. • حاصل E9C
مبنای 16 (ادامه) • تبدیل عدد از مبنای 16 به مبنای 10 • ضرب هر رقم در 16 به توان ارزش مکانی رقم • ضرب رقم در ارزش مکانی رقم16 • 160، 161، 162، 163، ...، n-116 • جمع مقادیر به دست آمده • مثال • عدد 2AF5را به مبنای 16 ببرید. • حاصل: 10997
مبنای 16 و مبنای 2 • مبنای 16 • هر رقم: 4 بیت • 16 = 24 • نمایش هر رقم مبنای 16 با 4 بیت • تبدیل مبنای 2 به مبنای 16 و برعکس • استفاده از مقادیر روبرو • مثال • مثال
مبنای 8 • اعداد 0 تا 7 • 0، 1، 2، 3، 4، 5، 6، 7 • تبدیل عدد از مبنای 10 به مبنای 8 • تقسیم متوالی عدد بر عدد 8 • مثال: عدد 4260 را به مبنای 8 ببرید. • حاصل: 10244 • تبدیل عدد از مبنای 8 به مبنای 10 • ضرب هر رقم در 8 به توان ارزش مکانی رقم • ضرب رقم در ارزش مکانی رقم8 • 80، 81، 82، 83، ...، n-18 • جمع مقادیر به دست آمده • مثال • عدد 4327 را به مبنای 8 ببرید. • حاصل: 2263
مبنای 8 و مبنای 2 • مبنای 8 • هر رقم: 3 بیت • 8 = 23 • نمایش هر رقم مبنای 8 با 3 بیت • تبدیل مبنای 2 به مبنای 8 و برعکس • استفاده از مقادیر روبرو • مثال • مثال
مبنای 8 و مبنای 16 • تبدیل از مبنای 8 به مبنای 16 و برعکس • تبدیل از مبنای مبدا به مبنای 2 • تبدیل از مبنای 2 به مبنای مقصد • مثال • عدد 2AFB5 را از مبنای 16 به مبنای 8 ببرید • حاصل: 527665
مقادیر اعشاری • تبدیل عدد اعشاری از مبنای 10 به مبنای 2 • قسمت صحیح: مانند قبل • قسمت اعشاری: ضرب متوالی قسمت اعشاری در عدد 2، استفاده از قسمت صحیح بدست آمده، جدا سازی قسمت صحیح حاصل و ادامه کار تا زمانی که بعد از ضرب به عدد 1، یا به تناوب برسیم. • مثال • عدد 14.725 را به مبنای 2 ببرید؟ • عدد 14 معادل 1110 است. • حاصل: 1110.1011100 • 0.725 * 2 = 1.45 • 0.45 * 2 = 0.9 • 0.9 * 2 = 1.8 • 0.8 * 2 = 1.6 • 0.6 * 2 = 1.2 • 0.2 * 2 = 0.4 • 0.4 * 2 = 0.8 • 0.8 * 2 = 1.6
مقادیر اعشاری • تبدیل عدد اعشاری از مبنای 2 به مبنای 10 • قسمت سمت چپ اعشار (قسمت صحیح)، مانند قبل: 20، 21، 22، 23، ... • قسمت سمت راست اعشار (قسمت اعشاری)، ضرب متوالی در 2-1، 2-2، 2-3، ... • مثال • عدد 1101.01011 را به مبنای 10 ببرید؟ • عدد 1101 معادل 13 است. • حاصل: 13.34375
نمایش مقادیر اعشاری • نمایش اعداد اعشاری در کامپیوتر مشکلتر است. • ما معمولا اعداد اعشاری را به شکل ممیز ثابت نشان میدهیم : 53.648 • اما شکل دیگری نیز وجود دارد که به آن نماد علمی یا ممیز شناور گفته میشود و به شکل زیر است : 53.648 × 100 5.3648 × 101 0.53648 × 102 5364.8 × 10-2 • همانطور که دیده میشود، مکان ممیز در این نمایش شناور است و میتواند در هر نقطهای قرار گیرد و البته توان نیز باید متناسب با آن تنظیم گردد. • نماد علمی نرمال به حالتی گفته میشود که قسمت صحیح فقط دارای یک رقم غیر صفر باشد. • برای نمایش اعداد اعشاری در کامپیوتر استانداردهای مختلفی وجود دارد که همگی در اصول مشترکند و تنها تفاوتهایی در جزئیات دارند.
1 8 23 m e s مانتیس توان علامت نمایش مقادیر اعشاری • ما در اینجا از یک روش استاندارد متداول که توسط انجمن معتبر IEEE ارائه شده است، استفاده میکنیم. این استاندارد بنام IEEE Standard 754 Floating Point Numbers شناخته شده است. • برای اطلاعات بیشتر به سایت http://standards.ieee.org مراجعه نمایید. • در استاندارد مورد نظر هر عدد اعشاری در یک کلمه 32 بیتی ذخیره میگردد. ساختار هر عدد بصورت زیر است:
نمایش مقادیر اعشاری • برای ذخیره یک عدد اعشاری باید ابتدا آن را به نماد علمی نرمال در مبنای 2 تبدیل کنیم. سپس آن را به شکل زیر ذخیره میکنیم : • علامت عدد را در s قرار میدهیم (مثبت = 0 و منفی = 1) • توان را در قسمت e قرار میدهیم که یک عدد مثبت بدون علامت است(بین 0 تا 255). • نکته مهم آنکه از آنجا که ممکن است توان مثبت یا منفی باشد، ابتدا 127واحد به توان اضافه میکنیم و سپس آن را ذخیره میکنیم. • بنابراین e = 131 باشد بدین معناست که توان برابر 4 بوده است و e=120 به معنای توان برابر -7 است. • البته توانهای e=255 و e=0 برای منظورهای خاصی در نظر گرفته شدهاند که بعدا توضیح داده خواهند شد. • در واقعیت محدوده توان از 126- تا 128+ خواهد بود. • قسمت پایه عدد را در مانتیس قرار میدهیم. • نکته جالب آن است که چون در نمایش نرمال قسمت صحیح تنها یک رقم غیرصفر دارد و در نمایش دودویی نیز تنها رقم غیر صفر، رقم 1 میباشد؛ بنابراین تنها قسمت اعشاری در مانتیس ذخیره میگردد و قسمت صحیح بطور پیش فرض 1 درنظر گرفته میشود. این باعث میشود که یک بیت در ذخیره سازی صرفه جویی گردد.
0 10000111 11100110000000000000000 نمایش مقادیر اعشاری • مثال:عدد صحیح486 را بصورت دودویی اعشاری ذخیره نمایید. • ابتدا آن را به مبنای 2 تبدیل میکنیم. (486)10 = (111100110)2 • اکنون داریم : 111100110 = 1.11100110 × 28 s : 0e : 8+127 = 135 = 10000111 m : 11100110 • بنابراین جواب نهایی بصورت زیر خواهد شد :
نمایش مقادیر اعشاری • مثال 2: عدد -121.640625را بصورت دودویی اعشاری ذخیره نمایید. • ابتدا عدد 121 را به مبنای 2 میبریم: (121)10 = (1111001)2 • واما برای تبدیل قسمت اعشاری باید از روش ضربهای متوالی استفاده نماییم. بدین صورت که ابتدا آن را در 2 ضرب کرده و قسمت صحیح حاصلضرب را ذخیره میکنیم. همین عمل را مجددا برروی قسمت اعشاری حاصلضرب انجام میدهیم و اینکار را تا صفر شدن قسمت اعشاری و یا پر شدن تعداد بیتهای کلمه موردنظر (23 بیت) تکرار میکنیم. در پایان ارقام ذخیره شده را از اول به آخر به ترتیب پس از ممیز قرار میدهیم. داریم : 0.640625 × 2 = 1.28125قسمت صحیح = 1 0.28125 × 2 = 0.5625قسمت صحیح = 0 0.5625 × 2 = 1.125 قسمت صحیح = 1 0.125 × 2 = 0.25 قسمت صحیح = 0 0.25 × 2 = 0.5 قسمت صحیح = 0 0.5 × 2 = 1.00 قسمت صحیح = 1 (0.640625)10 = (0.101001)2
1 10000011 11100110100100000000000 نمایش مقادیر اعشاری • بنابراین عدد نهایی بصورت زیر درخواهد آمد : (121.640625)10 = (1111001.101001)2 = (1.111001101001 × 26)2 s : 1 e : 6 + 127 = 133 = 10000011m : 111001101001 • نکته مهم : توجه داشته باشید که به دلیل محدود بودن اندازه مانتیس (23 بیت)، در هنگام تبدیل اعداد از مبنای 10 به مبنای 2 مجبور هستیم عمل ضرب را تا زمانیکه بیتها پر شوند ادامه دهیم. این مسئله باعث میشود که مقدار تقریبی اعداد در کلمه 32 بیتی ذخیره گردد. بنابراین در هنگام کار با اعداد اعشاری به این مسئله توجه کنید
نمایش مقادیر اعشاری • یک عدد اعشاری ذخیره شده به فرم استاندارد موردنظر به شکل زیر تفسیر میگردد : • اگر 0<e<255 آنگاه (-1)s × (1.m) × 2e-127= عدد • اگر e=0 و m غیر صفر باشد آنگاه(-1)s × (0.m) × 2-126= عدد • که به آن عدد غیرنرمال (unnormalized) گفته میشود. دلیل این مسئله آنست که با کوچکترین توان ممکن یعنی -126 بتوان کوچکترین مانتیس ممکن (بدون اضافه شدن 1) را برای نمایش اعداد کوچک داشت. • اگر e=0 و m=0 آنگاه = 0 عدد • که البته بسته به میزان s مقدار آن +0 یا -0 خواهد بود. • اگر e=255 و m غیرصفر باشد آنگاه حاصل یک عدد نیست (NaN یا Not a Number) • اگر e=255 و m=0 و s=0 آنگاه عدد برابر مثبت بینهایت است. • اگر e=255 و m=0 و s=1 آنگاه عدد برابر منفی بینهایت است.
ذخیره کاراکترها • کاراکترها • Standard ASCII(0 – 127) • Extended ASCII(0 – 255) • ANSI(0 – 255) • Unicode (0 – 65,535) • کاراکتر A • مبنای 2: 01000001 • مبنای 10: 65 • مبنای 16: 41 • مبنای 8: 101