Transcript Document
فصل اول
مبانی کامپیوتر و برنامه نویس ی
•
مطالب فصل
– مقادیر دودویی یا باینری
– واحدهای مختلف اندازهگیری حافظه
– نمایش اعداد منفی
– تبدیل مقادیر باینری به مبنای ده و برعکس
– نمایش مقادیر عددی در مبنای شانزده
– نمایش مقادیر عددی در مبنای هشت
– تبدیل مقادیر از مبنای ده به مبنای هشت و برعکس
– تبدیل مقادیر از مبنای شانزده به مبنای ده و برعکس
– تبدیل مقادیر از مبنای شانزده به مبنای هشت و برعکس
2
مبنای 10و مبنای 2
مبانی کامپیوتر و برنامه نویس ی
•
مبنای ،10اساس کار بشر
– تعداد 10عدد انگشت
•
مبنای ،2اساس کار کامپیوتر
– سیگنال خاموش/روشن
•
تبدیل مبنای 10به مبنای 2
– تقسیم متوالی عدد بر 2
– استفاده معکوس از باقیمانده های تولید شده
– مثال :نمایش عدد 50در مبنای 2
3
تبدیل مبنای 2به مبنای 10
مبانی کامپیوتر و برنامه نویس ی
ارزش مکانی رقم
•
– سمت راست کم ارزش :اندیس 0
– سمت چپ پر ارزش
•
تبدیل از مبنای 2به مبنای 10
– ضرب رقم در ارزش مکانی رقم2
– 2n-1 ،... ،23 ،22 ،21 ،20
– جمع مقادیر به دست آمده
•
مثال
– عدد 11010
4
دیگر مثالها
مبانی کامپیوتر و برنامه نویس ی
•
تبدیل 37به 100101
•
تبدیل 1101101به 109
5
جمع و تفریق اعداد مبنای 2
مبانی کامپیوتر و برنامه نویس ی
•
مشابه مبنای 10
– رقم نقلی ()Carry
– رقم قرض ی ()Borrow
•
مثال
– جمع عدد 10با 3در مبنای 2
6
جمع و تفریق در مبنای 2
مبانی کامپیوتر و برنامه نویس ی
•
20 + 17
•
تفریق در مبنای 2
7
بایت
مبانی کامپیوتر و برنامه نویس ی
•
بیت
– کوچکترین واحد حافظه
– 0یا 1
– مخفف Binary Digit
– نمایش با b
•
بایت
– 8بیت پشت سر هم
–
–
–
–
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وجود دارد.
9
مثال عدد منفی
مبانی کامپیوتر و برنامه نویس ی
•
تبدیل عدد -26به مبنای 2
– ابتدا تبدیل 26به مبنای 2
– سپس افزودن تعدادی بیت
– سپس مکمل کردن عدد
– در نهایت افزودن عدد 1به مقدار به دست آمده
– در مکمل MSB ،2همیشه 1است.
10
مثال عدد منفی
مبانی کامپیوتر و برنامه نویس ی
•
تبدیل عدد -35به مبنای 2
– ابتدا تبدیل 35به مبنای 2
– سپس افزودن تعدادی بیت
– سپس مکمل کردن عدد
– در نهایت افزودن عدد 1به مقدار به دست آمده
11
تبدیل عدد منفی مبنای 2به مبنای 10
مبانی کامپیوتر و برنامه نویس ی
•
مراحل
– محاسبه مکمل 1
– افزودن عدد 1به حاصل
– بردن عدد به مبنای 10
– قرار دادن عالمت – پشت عدد به دست آمده
11011101 00100010 00100011 35 -35
12
مثال از تفریق (جمع عدد منفی)
مبانی کامپیوتر و برنامه نویس ی
•
محاسبه مقدار 27-20
– معادل با (27 + )-20
10100 00010100 11101011 11101100
13
گروهبندی بیتها
مبانی کامپیوتر و برنامه نویس ی
•
بایت ()Byte
– 8بیت کنار هم
•
کلمه ()Word
–
–
–
–
•
2بایت کنار هم ( 16بیت)
در برخی کامپیوتر 4بایت است
بایت سمت راست :بایت مرتبه پایین
بایت سمت چپ :بایت مرتبه باال
کلمه مضاعف ()Double Word
– 4بایت کنار هم ( 32بیت)
•
Quad Word
– 8بایت کنار هم ( 64بیت)
•
TenByte
– 10بایت کنار هم ( 80بیت)
14
محدوده عالمتدار و بدون عالمت
مبانی کامپیوتر و برنامه نویس ی
15
رقم نقلی و رقم قرض ی
مبانی کامپیوتر و برنامه نویس ی
•
عملیات بیتی
16
مبنای 16
مبانی کامپیوتر و برنامه نویس ی
•
اعداد 0تا 15
– 9 ،8 ،7 ،6 ،5 ،4 ،3 ،2 ،1 ،0
– F ،E ،D ،C ،B ،A
•
تبدیل عدد از مبنای 10به مبنای 16
– تقسیم متوالی عدد بر عدد 16
– مثال :عدد 176را به مبنای 16ببرید.
– حاصلAE :
– مثال :عدد 3740را به مبنای 16ببرید.
– حاصل E9C
17
مبنای ( 16ادامه)
مبانی کامپیوتر و برنامه نویس ی
•
تبدیل عدد از مبنای 16به مبنای 10
–
–
–
–
•
ضرب هر رقم در 16به توان ارزش مکانی رقم
ضرب رقم در ارزش مکانی رقم16
16n-1 ،... ،163 ،162 ،161 ،160
جمع مقادیر به دست آمده
مثال
– عدد 2AF5را به مبنای 16ببرید.
– حاصل10997 :
18
مبنای 16و مبنای 2
مبانی کامپیوتر و برنامه نویس ی
•
مبنای 16
– هر رقم 4 :بیت
– 24 = 16
– نمایش هر رقم مبنای 16با 4بیت
•
تبدیل مبنای 2به مبنای 16و برعکس
– استفاده از مقادیر روبرو
•
مثال
•
مثال
19
مبنای 8
مبانی کامپیوتر و برنامه نویس ی
•
اعداد 0تا 7
– 7 ،6 ،5 ،4 ،3 ،2 ،1 ،0
•
تبدیل عدد از مبنای 10به مبنای 8
– تقسیم متوالی عدد بر عدد 8
– مثال :عدد 4260را به مبنای 8ببرید.
– حاصل10244 :
•
تبدیل عدد از مبنای 8به مبنای 10
–
–
–
–
•
ضرب هر رقم در 8به توان ارزش مکانی رقم
ضرب رقم در ارزش مکانی رقم8
8n-1 ،... ،83 ،82 ،81 ،80
جمع مقادیر به دست آمده
مثال
– عدد 4327را به مبنای 8ببرید.
– حاصل2263 :
20
مبنای 8و مبنای 2
مبانی کامپیوتر و برنامه نویس ی
•
مبنای 8
– هر رقم 3 :بیت
– 23 = 8
– نمایش هر رقم مبنای 8با 3بیت
•
تبدیل مبنای 2به مبنای 8و برعکس
– استفاده از مقادیر روبرو
•
مثال
•
مثال
21
مبنای 8و مبنای 16
مبانی کامپیوتر و برنامه نویس ی
•
تبدیل از مبنای 8به مبنای 16و برعکس
– تبدیل از مبنای مبدا به مبنای 2
– تبدیل از مبنای 2به مبنای مقصد
•
مثال
– عدد 2AFB5را از مبنای 16به مبنای 8ببرید
– حاصل527665 :
22
مقادیر اعشاری
مبانی کامپیوتر و برنامه نویس ی
•
تبدیل عدد اعشاری از مبنای 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
23
–
–
–
–
–
–
–
–
مقادیر اعشاری
مبانی کامپیوتر و برنامه نویس ی
•
تبدیل عدد اعشاری از مبنای 2به مبنای 10
– قسمت سمت چپ اعشار (قسمت صحیح) ،مانند قبل... ،23 ،22 ،21 ،20 :
– قسمت سمت راست اعشار (قسمت اعشاری) ،ضرب متوالی در ... ،2-3 ،2-2 ،2-1
•
مثال
– عدد 1101.01011را به مبنای 10ببرید؟
– عدد 1101معادل 13است.
– حاصل13.34375 :
24
نمایش مقادیر اعشاری
مبانی کامپیوتر و برنامه نویس ی
•
نمایش اعداد اعشاری در کامپیوتر مشکلتر است.
– ما معموال اعداد اعشاری را به شکل ممیز ثابت نشان میدهیم 53.648 :
– اما شکل دیگری نیز وجود دارد که به آن نماد علمی یا ممیز شناور گفته میشود و به شکل زیر است :
•
•
53.648 × 100
5.3648 × 101
0.53648 × 102
5364.8 × 10-2
همانطور که دیده میشود ،مکان ممیمز در ایمن نممایش شمناور اسمت و میتوانمد در همر نقطمهای قمرار گیمرد و البتمه تموان نیمز بایمد
متناسب با آن تنظیم گردد.
– نماد علمی نرمال به حالتی گفته میشود که قسمت صحیح فقط دارای یک رقم غیر صفر باشد.
برای نمایش اعمداد اعشماری در کمامپیوتر اسمتانداردهای مختلفمی وجمود دارد کمه همصمی در اصمول مشمترکند و تنهما تفاوتهمایی در
جزئیات دارند.
نمایش مقادیر اعشاری
مبانی کامپیوتر و برنامه نویس ی
•
•
•
ممما در این مما از یممک روش اسممتاندارد متممداول کممه توسممط ان مممن معتبممر IEEEارائممه شممده اسممت ،اسممتفاده
میکنیم .این استاندارد بنام
IEEE Standard 754 Floating Point Numbers
شناخته شده است.
برای اطالعات بیشتر به سایت http://standards.ieee.orgمراجعه نمایید.
در استاندارد مورد نظر هر عدد اعشاری در یک کلمه 32بیتی ذخیره میگردد .ساختار هر عدد بصمورت زیمر
است:
8
23
m
مانتیس
e
توان
1
s
عالمت
نمایش مقادیر اعشاری
مبانی کامپیوتر و برنامه نویس ی
• برای ذخیره یک عدد اعشاری باید ابتدا آن را به نماد علمی نرمال در مبنای 2تبدیل کنیم .سپس آن را به شمکل
زیر ذخیره میکنیم :
• عالمت عدد را در sقرار میدهیم (مثبت = 0و منفی = )1
• توان را در قسمت eقرار میدهیم که یک عدد مثبت بدون عالمت است(بین 0تا .)255
–
–
–
–
نکتمه مممم آنکمه از آن ما کمه ممکمن اسممت تموان مثبمت یما منفمی باشمد ،ابتممدا 127واحمد بمه تموان اضمافه ممیکنیم و سممپس آن را
ذخیره میکنیم.
بنابراین e = 131باشد بدین معناست که توان برابر 4بوده است و e=120به معنای توان برابر -7است.
البته توانهای e=255و e=0برای منظورهای خاص ی در نظر گرفته شدهاند که بعدا توضیح داده خواهند شد.
در واقعیت محدوده توان از -126تا +128خواهد بود.
• قسمت پایه عدد را در مانتیس قرار میدهیم.
– نکته جالب آن است که چون در نمایش نرمال قسمت صحیح تنها یک رقم غیرصفر دارد و در نمایش دودویی نیز تنها رقمم غیمر
صفر ،رقم 1میباشد؛ بنابراین تنها قسمت اعشاری در مانتیس ذخیره میگردد و قسمت صمحیح بطمور پمیش فمر 1درنظمر
گرفته میشود .این باعث میشود که یک بیت در ذخیره سازی صرفه جویی گردد.
نمایش مقادیر اعشاری
مبانی کامپیوتر و برنامه نویس ی
•
مثال :عدد صحیح 486را بصورت دودویی اعشاری ذخیره نمایید.
– ابتدا آن را به مبنای 2تبدیل میکنیم.
(486)10 = (111100110)2
– اکنون داریم :
111100110 = 1.11100110 × 28
s : 0 e : 8+127 = 135 = 10000111m : 11100110
– بنابراین جواب نهایی بصورت زیر خواهد شد :
11100110000000000000000
10000111
0
نمایش مقادیر اعشاری
مبانی کامپیوتر و برنامه نویس ی
•
مثال :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
نمایش مقادیر اعشاری
مبانی کامپیوتر و برنامه نویس ی
•
بنابراین عدد نهایی بصورت زیر درخواهد آمد :
(121.640625)10 = (1111001.101001)2 = (1.111001101001 × 26)2
m : 111001101001
e : 6 + 127 = 133 = 10000011
11100110100100000000000
•
10000011
s:1
1
نکته ممم :توجه داشته باشید که به دلیل محدود بودن اندازه مانتیس ( 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آنصاه عدد برابر منفی بینهایت است.
نی -
ذخیره کاراکترها
مبانی کامپیوتر و برنامه نویس ی
•
کاراکترها
–
–
–
–
•
(0 – 127) Standard ASCII
(0 – 255) Extended ASCII
(0 – 255) ANSI
(0 – 65,535) Unicode
کاراکتر A
– مبنای 01000001 :2
– مبنای 65 :10
– مبنای 41 :16
– مبنای 101 :8
32
کد کاراکترها
مبانی کامپیوتر و برنامه نویس ی
33
کد کاراکترها
مبانی کامپیوتر و برنامه نویس ی
34