0% found this document useful (0 votes)
4 views62 pages

Chapter 2 - Coding

Uploaded by

aradmard513
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views62 pages

Chapter 2 - Coding

Uploaded by

aradmard513
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 62

1

‫مبانی کامپیوتر و برنامهنویسی‬

‫راضیه قیاسی‬
‫‪[email protected]‬‬

‫دانشگاه پردیس فارابی دانشگاه تهران‬


‫نیمسال اول ‪1400-1399‬‬

‫‪2‬‬
‫فصل دوم‪:‬‬
‫سیستم اعداد و کدگذاری‬

‫‪3‬‬
‫مقدمه‬

‫عدد‬

‫متن‬

‫تصویر‬ ‫ورودی رایانه‬

‫صوت‬

‫ویدئو‬
‫سیستم اعداد و کدگذاری‬ ‫‪4‬‬
‫مقدمه‬
‫آشناترین سیستم عددنویسی برای انسان‪ ،‬سیستم دهدهی است که نشانههای آن ارقام ‪0‬تا ‪ 9‬هستند‪.‬‬ ‫•‬
‫اگر بخواهیم در کامپیوتر برای نمایش دادهها و اطالعات از سیستم دهدهی استفاده کنیم‪ ،‬در پیادهسازی سختافزاری به ده‬ ‫•‬
‫عالمت مختلف برای تشخیص ده رقم مختلف نیاز داریم‪.‬‬
‫این وضعیت پیچیدگی فراوانی را ایجاد میکند که هم هزینه طراحی سختافزار را افزایش میدهد و هم احتمال خطا را زیاد‬ ‫•‬
‫میکند‪.‬‬
‫بنابراین باید روشی برای عددنویسی پیدا کنیم که پیادهسازی آن به کمترین تعداد عالمت نیاز داشته باشد‪.‬‬ ‫•‬
‫چون سادهترین حالت‪ ،‬وجود داشتن یا نداشتن عالمت است‪ ،‬بنابراین باید روشی را پیدا کنیم که تنها دو نماد برای نوشتن‬ ‫•‬
‫داشته باشد‪.‬‬
‫سیستم دودویی این نیاز را برآورده میسازد‪.‬‬ ‫•‬

‫سیستم اعداد و کدگذاری‬ ‫‪5‬‬


‫تبدیل عدد دهدهی به دودویی‬

‫بدون عالمت‬

‫صحیح‬
‫عالمتدار‬

‫اعداد‬

‫بدون عالمت‬

‫اعشاری‬

‫عالمتدار‬

‫سیستم اعداد و کدگذاری‬ ‫‪6‬‬


‫تبدیل عدد دهدهی به دودویی‬
‫• در این مبنا از ارقام ‪ 0‬و ‪ 1‬استفاده می شود‪.‬‬
‫• روش تبدیل‪:‬‬
‫• تقسیمات متوالی به مبنای ‪ 2‬تا زمانیکه خارج قسمت ‪ 0‬شود‪.‬‬
‫• باقیمانده های ذخیره شده از آخرین باقیمانده تا اولین‪ ،‬از راست به چپ نوشته می شوند‪.‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪7‬‬


‫تمرین‬

‫‪69‬‬ ‫‪10‬‬ ‫? =‬ ‫‪2‬‬

‫‪129‬‬ ‫‪10‬‬ ‫? =‬ ‫‪2‬‬

‫‪284‬‬ ‫‪10‬‬ ‫? =‬ ‫‪2‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪8‬‬


‫تبدیل عدد دودویی به دهدهی‬
‫• روش تبدیل‪:‬‬
‫• برای تبدیل عدد دودویی به دهدهی از ضربهای متوالی استفاده میشود‪.‬‬
‫• ضرب هر رقم در ‪ 2‬به توان ارزش مکانی و جمع حاصلضربها‬

‫سیستم اعداد و کدگذاری‬ ‫‪9‬‬


‫تمرین‬

‫‪11010100‬‬ ‫‪2‬‬ ‫? =‬ ‫‪10‬‬

‫‪101011‬‬ ‫‪2‬‬ ‫? =‬ ‫‪10‬‬

‫‪1101100‬‬ ‫‪2‬‬ ‫? =‬ ‫‪10‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪10‬‬


‫تبدیل عدد دهدهی به مبناهای ‪ 8‬و ‪16‬‬
‫• مبنای ‪ 2‬نیاز به فضای زیادی است‪.‬‬
‫• به منظور سادگی نمایش اعداد دودویی میتوان از مبناهای بزرگتر همچون مبنای ‪ 8‬و ‪ 16‬استفاده کرد‪.‬‬
‫به دلیل اینکه ‪ 23=8‬است‪ ،‬هر رقم در مبنای ‪ 8‬متعلق به سه رقم در مبنای ‪ 2‬است‪.‬‬ ‫•‬
‫به همین شکل‪ ،‬به دلیل اینکه ‪ 24=16‬است‪ .‬هر رقم در مبنای ‪ 16‬متعلق به چهار رقم در مبنای ‪ 2‬است‪.‬‬ ‫•‬
‫در مبنا ‪ ،8‬از ارقام ‪ 7-0‬استفاده میشود و در مبنای ‪ 16‬از ارقام ‪ 9-0‬و شش نماد ‪ E ،D ،C ،B ،A‬و ‪ F‬که به ترتیب نشانگر‬ ‫•‬
‫اعداد دهدهی ‪ 14 ،13 ،12 ،11 ،10‬و ‪ 15‬هستند‪ ،‬استفاده میشود‪.‬‬
‫روش تبدیل‪:‬‬ ‫•‬
‫• تقسیمات متوالی به مبنای ‪ 8‬یا ‪ 16‬تا زمانیکه خارج قسمت ‪ 0‬شود‪.‬‬
‫• باقیمانده های ذخیره شده از آخرین باقیمانده تا اولین‪ ،‬از راست به چپ نوشته می شوند‪.‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪11‬‬


‫تبدیل عدد دهدهی به مبناهای ‪ 8‬و ‪16‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪12‬‬


‫تمرین‬

‫‪327‬‬ ‫‪10‬‬ ‫? =‬ ‫‪8‬‬

‫‪921‬‬ ‫‪10‬‬ ‫? =‬ ‫‪8‬‬

‫‪182‬‬ ‫‪10‬‬ ‫? =‬ ‫‪8‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪13‬‬


‫تمرین‬

‫‪69‬‬ ‫‪10‬‬ ‫? =‬ ‫‪16‬‬

‫‪529‬‬ ‫‪10‬‬ ‫? =‬ ‫‪16‬‬

‫‪134‬‬ ‫‪10‬‬ ‫? =‬ ‫‪16‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪14‬‬


‫تبدیل عدد از سایر مبناها به دهدهی‬
‫• روش تبدیل‪:‬‬
‫• برای تبدیل عدد هشت هشتی ‪ /‬شانزدهی به دهدهی از ضربهای متوالی استفاده میشود‪.‬‬
‫• ضرب هر رقم در ‪ 16 / 8‬به توان ارزش مکانی و جمع حاصلضربها‬

‫‪135‬‬ ‫‪8‬‬ ‫‪= 5 × 80 + 3 × 81 + 1 × 82 = 93‬‬ ‫‪10‬‬

‫‪(𝐴𝐵45)16 = 5 × 160 + 4 × 161 + 11 × 162 + 10 × 163 = (43845)10‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪15‬‬


‫تمرین‬

‫‪137‬‬ ‫‪8‬‬ ‫? =‬ ‫‪10‬‬

‫‪357‬‬ ‫‪8‬‬ ‫? =‬ ‫‪10‬‬

‫‪756‬‬ ‫‪8‬‬ ‫? =‬ ‫‪10‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪16‬‬


‫تمرین‬

‫𝐵‪𝐴38‬‬ ‫‪16‬‬ ‫? =‬ ‫‪10‬‬

‫‪98𝐹𝐸0‬‬ ‫‪16‬‬ ‫? =‬ ‫‪10‬‬

‫𝐶‪685‬‬ ‫‪16‬‬ ‫? =‬ ‫‪10‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪17‬‬


‫تبدیل عدد دودویی به هشت هشتی و بالعکس‬
‫• تبدیل از ‪ 2‬به ‪:8‬‬
‫• جداسازی ارقام به صورت دستههای سهتایی از راست به چپ و تبدیل هر دسته به مبنای ‪8‬‬

‫‪10111011101‬‬ ‫‪2‬‬ ‫‪= 010 111 011 101 = 2735‬‬ ‫‪8‬‬

‫• تبدیل از ‪ 8‬به ‪:2‬‬


‫• تبدیل هر رقم به سه رقم در مبنای دو‬

‫‪2735‬‬ ‫‪8‬‬ ‫‪= 010 111 011 101= (10111011101)2‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪18‬‬


‫تمرین‬

‫‪11010100‬‬ ‫‪2‬‬ ‫? =‬ ‫‪8‬‬

‫‪1100101011‬‬ ‫‪2‬‬ ‫? =‬ ‫‪8‬‬

‫‪457‬‬ ‫‪8‬‬ ‫? =‬ ‫‪2‬‬

‫‪263‬‬ ‫‪8‬‬ ‫? =‬ ‫‪2‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪19‬‬


‫تبدیل عدد دودویی به شانزدهی و بالعکس‬
‫• تبدیل از ‪ 2‬به ‪:16‬‬
‫• جداسازی ارقام به صورت دستههای چهارتایی از راست به چپ و تبدیل هر دسته به مبنای ‪16‬‬

‫‪10111011101‬‬ ‫‪2‬‬ ‫‪= 0101 1101 1101 = 5DD‬‬ ‫‪16‬‬

‫• تبدیل از ‪ 16‬به ‪:2‬‬


‫• تبدیل هر رقم به چهار رقم در مبنای دو‬

‫‪5DD‬‬ ‫‪16‬‬ ‫‪= 0101 1101 1101= (010111011101)2‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪20‬‬


‫تمرین‬

‫‪11010100100010‬‬ ‫‪2‬‬ ‫? =‬ ‫‪16‬‬

‫‪1100101011‬‬ ‫‪2‬‬ ‫? =‬ ‫‪16‬‬

‫‪𝐴𝐵1259‬‬ ‫‪16‬‬ ‫? =‬ ‫‪2‬‬

‫‪87𝐴54‬‬ ‫‪16‬‬ ‫? =‬ ‫‪2‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪21‬‬


‫متممگیری در مبنای ‪r‬‬
‫• در کامپیوترهای دیجیتالی از تکنیک متممگیری برای انجام عمل تفریق و نگهداری اعداد عالمتدار استفاده می شود‪.‬‬

‫• در هر مبنایی چون ‪ r‬دو نوع متمم وجود دارد‪:‬‬


‫• متمم ‪( r‬متمم مبنا)‪:‬‬
‫• از سمت راست صفرها را رها کرده‪ ،‬اولین عدد غیر صفر از ‪ r‬و باقی ارقام از ‪ r-1‬کم میشود‪.‬‬
‫• متمم ‪( r-1‬متمم مبنای کاهش یافته)‪:‬‬
‫• تمام ارقام از‪ r-1‬کم میشود‪.‬‬

‫• نکته‪ :‬متمم ‪ r‬همان متمم ‪ r-1‬بعالوه ‪1‬‬


‫• نکته‪ :‬در مبنای ‪ :2‬برای متمم ‪ )r-1( 1‬تمام ارقام معکوس میشود (‪ 0←1‬و ‪)1←0‬‬
‫• نکته‪ :‬در مبنای ‪ :2‬برای متمم ‪ ،)r( 2‬از سمت راست صفرها را رها کرده‪ ،‬اولین عدد ‪ 1‬ثابت مانده‪ ،‬باقی ارقام معکوس میشود‪.‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪22‬‬


‫متممگیری در مبنای ‪r‬‬

‫متمم ‪9‬‬ ‫متمم ‪7‬‬


‫‪9864‬‬ ‫‪0135‬‬ ‫‪362‬‬ ‫‪8‬‬ ‫‪415‬‬
‫‪10‬‬

‫متمم ‪10‬‬ ‫متمم ‪8‬‬


‫‪986400‬‬ ‫‪10‬‬
‫‪013600‬‬ ‫‪4576‬‬ ‫‪8‬‬ ‫‪3202‬‬

‫متمم ‪15‬‬
‫متمم ‪1‬‬ ‫‪3B5A‬‬ ‫‪𝐶4𝐴5‬‬
‫‪110100102‬‬ ‫‪00101101‬‬ ‫‪16‬‬

‫متمم ‪2‬‬ ‫متمم ‪16‬‬


‫‪11010010‬‬ ‫‪2‬‬ ‫‪00101110‬‬ ‫‪5CDA00‬‬ ‫‪16‬‬ ‫‪𝐴32600‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪23‬‬


‫تمرین‬

‫‪11010100‬‬ ‫متمم ‪2‬‬ ‫متمم ‪15‬‬


‫‪2‬‬ ‫‪𝐴𝐵12590‬‬ ‫‪16‬‬

‫متمم ‪16‬‬
‫‪1100101011‬‬ ‫متمم ‪1‬‬ ‫‪398𝐴𝐵1‬‬ ‫‪16‬‬
‫‪2‬‬

‫متمم ‪8‬‬ ‫متمم ‪9‬‬


‫‪4570‬‬ ‫‪8‬‬ ‫‪01897‬‬ ‫‪10‬‬

‫متمم ‪10‬‬
‫‪263‬‬ ‫متمم ‪7‬‬ ‫‪7986‬‬
‫‪8‬‬ ‫‪10‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪24‬‬


‫تبدیل عدد دهدهی به دودویی‬

‫بدون عالمت‬

‫صحیح‬
‫عالمتدار‬

‫اعداد‬

‫بدون عالمت‬

‫اعشاری‬

‫عالمتدار‬

‫سیستم اعداد و کدگذاری‬ ‫‪25‬‬


‫تبدیل اعداد عالمتدار‬
‫• سه روش برای ذخیرهسازی اعداد عالمتدار وجود دارد‪:‬‬
‫• بیت عالمت‪:‬‬
‫• بیت آخر از سمت چپ به عنوان بیت عالمت در نظر گرفته میشود‪ .‬عدد ‪ 0‬برای تعیین اعداد مثبت و عدد ‪ 1‬برای تعیین منفی بودن‬
‫استفاده میشود‪.‬‬
‫• متمم ‪:1‬‬
‫• اعداد مثبت‪ ،‬به طور معمول ذخیره میشوند (مبنای ‪ ،)2‬اعداد منفی به صورت متمم ‪ 1‬ذخیره میشوند‪.‬‬
‫• متمم ‪:2‬‬
‫• اعداد مثبت‪ ،‬به طور معمول ذخیره میشوند (مبنای ‪ ،)2‬اعداد منفی به صورت متمم ‪ 2‬ذخیره میشوند‪.‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪26‬‬


‫تبدیل اعداد عالمتدار‬
‫• عدد ‪ 15‬با سه روش ذخیرهسازی (فضای ذخیرهسازی‪ 8 :‬بیت)‬

‫‪15‬‬ ‫‪10‬‬ ‫‪= 00001111‬‬ ‫‪2‬‬

‫منفی (‪)-15‬‬ ‫مثبت (‪)+15‬‬ ‫روش‬


‫‪10001111‬‬ ‫‪00001111‬‬ ‫بیت عالمت‬
‫‪11110000‬‬ ‫‪00001111‬‬ ‫متمم‪1‬‬
‫روش مرسوم برای‬ ‫‪11110001‬‬ ‫‪00001111‬‬ ‫متمم‪2‬‬
‫ذخیرهسازی اعداد‬
‫عالمتدار‬

‫• نکته‪ :‬با هر سه روش بیت آخر از چپ مقدار ‪ 1‬دارد‪ .‬بنابراین در صورت مشاهده ‪ 1‬در سمت چپ به معنای منفی بودن آن عدد‬
‫است‪.‬‬
‫‪11010100‬‬ ‫‪2‬‬ ‫‪= −00101100 = −44‬‬ ‫‪10‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪27‬‬


‫عدد‬ ‫بیت عالمت‬ ‫متمم ‪1‬‬ ‫متمم ‪2‬‬
‫‪0000‬‬ ‫‪+0‬‬ ‫‪+0‬‬ ‫‪+0‬‬
‫‪0001‬‬ ‫‪+1‬‬ ‫‪+1‬‬ ‫‪+1‬‬
‫‪0010‬‬ ‫‪+2‬‬ ‫‪+2‬‬ ‫‪+2‬‬
‫‪0011‬‬ ‫‪+3‬‬ ‫‪+3‬‬ ‫‪+3‬‬
‫‪0100‬‬ ‫‪+4‬‬ ‫‪+4‬‬ ‫‪+4‬‬
‫‪0101‬‬ ‫‪+5‬‬ ‫‪+5‬‬ ‫‪+5‬‬
‫‪0110‬‬ ‫‪+6‬‬ ‫‪+6‬‬ ‫‪+6‬‬
‫‪0111‬‬ ‫‪+7‬‬ ‫‪+7‬‬ ‫‪+7‬‬
‫‪1000‬‬ ‫‪-0‬‬ ‫‪-7‬‬ ‫‪-8‬‬
‫‪1001‬‬ ‫‪-1‬‬ ‫‪-6‬‬ ‫‪-7‬‬
‫‪1010‬‬ ‫‪-2‬‬ ‫‪-5‬‬ ‫‪-6‬‬
‫‪1011‬‬ ‫‪-3‬‬ ‫‪-4‬‬ ‫‪-5‬‬
‫‪1100‬‬ ‫‪-4‬‬ ‫‪-3‬‬ ‫‪-4‬‬
‫‪1101‬‬ ‫‪-5‬‬ ‫‪-2‬‬ ‫‪-3‬‬
‫‪1110‬‬ ‫‪-6‬‬ ‫‪-1‬‬ ‫‪-2‬‬
‫‪1111‬‬ ‫سیستم اعداد و‪-7‬‬
‫کدگذاری‬ ‫‪-0‬‬ ‫‪-1‬‬ ‫‪28‬‬
‫تمرین‬

‫‪+125‬‬ ‫‪10‬‬ ‫? =‬ ‫‪2‬‬ ‫‪11010100‬‬ ‫‪2‬‬ ‫? =‬ ‫‪10‬‬

‫‪−72‬‬ ‫‪10‬‬ ‫? =‬ ‫‪2‬‬ ‫‪00010110‬‬ ‫‪2‬‬ ‫? =‬ ‫‪10‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪29‬‬


‫جمع در سیستم دودویی (سیستم بدون عالمت)‬
‫• جمع در سیستم دودویی همانند جمع در سیستم دهدهی است‪.‬‬
‫• نکته‪ :‬جمع ‪ 1‬با ‪ 1‬می شود ‪ .2‬در سیستم عدد ‪ 2‬نداریم‪ .‬پس مجددا ‪ 2‬را به مبنای ‪ 2‬میبریم‪ 2 .‬در سیستم دودویی میشود‬
‫‪ 0 .10‬را پایین قرار میدهیم و ‪ 1‬را به رقم بعدی اضافه میکنیم‪.‬‬

‫‪1 11‬‬ ‫‪1‬‬ ‫‪1‬‬


‫‪1011‬‬ ‫‪29 = 0 0 0 1 1 1 0 1‬‬ ‫‪2‬‬ ‫‪00011101‬‬

‫‪+‬‬ ‫‪1001‬‬ ‫‪+ 17 = 0 0 0 1 0 0 0 1‬‬ ‫‪2‬‬


‫‪+‬‬ ‫‪00010001‬‬

‫‪10100‬‬ ‫‪00101110‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪30‬‬


‫تمرین‬

‫‪39‬‬ ‫‪65‬‬ ‫‪128‬‬

‫‪+‬‬ ‫‪58‬‬ ‫‪+‬‬ ‫‪46‬‬ ‫‪+‬‬ ‫‪36‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪31‬‬


‫جمع در سیستمهای دیگر‬

‫‪1 11‬‬ ‫‪1‬‬


‫‪456‬‬
‫𝐶‪𝐴 2 8‬‬
‫‪+‬‬ ‫‪653‬‬ ‫‪+‬‬ ‫𝐹‪0 3 5‬‬
‫‪1331‬‬ ‫𝐵𝐸‪𝐴 5‬‬

‫مبنای ‪8‬‬ ‫مبنای ‪16‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪32‬‬


‫تفریق در سیستم دودویی (بدون عالمت)‬
‫• به منظور تفریق دو عدد (‪ M‬و ‪ )N‬در مبنای دو‪ ،‬اولین عدد را نوشته با متمم ‪ 2‬عدد دوم جمع میکنیم‪.‬‬
‫• نکته‪ :‬اگر نتیجه به صورت بدون عالمت ذخیره شود‪ ،‬عدد حاصل از تفریق به مبنای دو میرود بدون در نظر گرفتن عالمت اما‬
‫اگر نتیجه به صورت عالمتدار ذخیره شود‪ ،‬به صورت زیر عمل میکنیم‪:‬‬
‫• اگر ‪ M≥N‬نتیجه جمع دارای رقم نقلی خواهد بود که از آن صرفنظر میکنیم‪.‬‬
‫• اگر ‪ M<N‬نتیجه جمع دارای رقم نقلی نخواهد بود و نتیجه منفی است‪ .‬لذا عدد را دوباره به فرم متمم ‪ 2‬تبدیل‬
‫میکنیم‪.‬‬

‫‪1111‬‬ ‫‪11‬‬
‫‪1011‬‬ ‫‪1011‬‬ ‫‪0001‬‬ ‫‪0001‬‬

‫‪−‬‬ ‫‪1001‬‬ ‫‪+‬‬ ‫‪0111‬‬ ‫‪−‬‬ ‫‪0101‬‬ ‫‪+‬‬ ‫‪1011‬‬

‫‪10010‬‬ ‫‪1100‬‬

‫‪+2‬‬ ‫‪0 1 0 0 = −4‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪33‬‬


‫تمرین‬

‫‪39‬‬ ‫‪65‬‬ ‫‪128‬‬

‫‪−‬‬ ‫‪58‬‬ ‫‪−‬‬ ‫‪46‬‬ ‫‪−‬‬ ‫‪36‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪34‬‬


‫تفریق در سایر سیستمها (بدون عالمت)‬
‫• به منظور تفریق دو عدد (‪ M‬و ‪ )N‬در مبنای دو‪ ،‬اولین عدد را نوشته با متمم ‪ r‬عدد دوم جمع میکنیم‪.‬‬
‫• نکته‪ :‬اگر نتیجه به صورت بدون عالمت ذخیره شود‪ ،‬عدد حاصل از تفریق به مبنای ‪ r‬میرود بدون در نظر گرفتن عالمت اما‬
‫اگر نتیجه به صورت عالمتدار ذخیره شود‪ ،‬به صورت زیر عمل میکنیم‪:‬‬
‫• اگر ‪ M≥N‬نتیجه جمع دارای رقم نقلی خواهد بود که از آن صرفنظر میکنیم‪.‬‬
‫• اگر ‪ M<N‬نتیجه جمع دارای رقم نقلی نخواهد بود و نتیجه منفی است‪ .‬لذا عدد را دوباره به فرم متمم ‪ r‬تبدیل‬
‫میکنیم‪.‬‬
‫‪1 1‬‬ ‫‪1 1‬‬
‫‪734‬‬ ‫‪734‬‬ ‫𝐴‪56‬‬ ‫𝐴 ‪56‬‬

‫‪−‬‬ ‫‪352‬‬ ‫‪+‬‬ ‫‪426‬‬ ‫‪−‬‬ ‫‪926‬‬ ‫𝐴𝐷‪+ 6‬‬

‫‪1362‬‬ ‫‪𝐶 4 4‬‬

‫‪362‬‬ ‫‪8‬‬ ‫‪= 242‬‬ ‫‪10‬‬ ‫‪𝐶44‬‬ ‫‪16‬‬ ‫𝐶𝐵‪= − 3‬‬ ‫‪16‬‬

‫مبنای ‪8‬‬ ‫مبنای ‪16‬‬


‫سیستم اعداد و کدگذاری‬ ‫‪35‬‬
‫تمرین‬
‫مبنای ‪8‬‬ ‫مبنای ‪16‬‬

‫‪37‬‬ ‫‪D65‬‬

‫‪−‬‬ ‫‪52‬‬ ‫‪−‬‬ ‫𝐸‪46‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪36‬‬


‫جمع و تفریق در سیستم عالمتدار‬
‫• مشابه سیستم بدون عالمت است فقط دقت شود که اعداد منفی به صورت متمم ‪ 2‬ذخیره شوند‪.‬‬

‫‪111 1111‬‬
‫‪+29 = 0 0 0 1 1 1 0 1‬‬ ‫‪2‬‬ ‫‪00011101‬‬

‫‪+ −17 = 0 0 0 1 0 0 0 1‬‬ ‫‪2‬‬


‫‪+‬‬ ‫‪11101111‬‬

‫‪1 00001100‬‬ ‫‪+12‬‬

‫‪1‬‬ ‫‪1‬‬
‫‪+29 = 0 0 0 1 1 1 0 1‬‬ ‫‪2‬‬ ‫‪00011101‬‬ ‫‪00011101‬‬

‫‪− −17 = 0 0 0 1 0 0 0 1‬‬ ‫‪2‬‬


‫‪−‬‬ ‫‪11101111‬‬ ‫‪+‬‬ ‫‪00010001‬‬

‫‪00101110‬‬

‫‪+46‬‬
‫سیستم اعداد و کدگذاری‬ ‫‪37‬‬
‫سرریز (‪)overflow‬‬
‫• سرریز زمانی رخ میدهد که حافظه کافی برای ذخیرهسازی وجود نداشته باشد‪.‬‬
‫فضای ذخیرهسازی‪ 4 :‬بیت‬ ‫• به این ترتیب آنچه که در کامپیوتر ذخیره میشود‪ ،‬داده درستی نیست‪.‬‬

‫‪111‬‬ ‫‪1 11‬‬


‫‪+7‬‬ ‫‪0111‬‬ ‫‪−7‬‬ ‫‪−0111‬‬ ‫‪1001‬‬

‫‪+‬‬ ‫‪+5‬‬ ‫‪+‬‬ ‫‪0101‬‬ ‫‪+‬‬ ‫‪−5‬‬ ‫‪+‬‬ ‫‪−0101‬‬ ‫‪+‬‬ ‫‪1011‬‬

‫‪+12‬‬ ‫‪1100 = 0100 = −4‬‬ ‫‪−12‬‬ ‫‪10100 = 0100 = +4‬‬

‫سرریز رخ داده‬ ‫سرریز رخ داده‬

‫سیستم اعداد و کدگذاری‬ ‫‪38‬‬


‫سرریز (‪)overflow‬‬
‫فضای ذخیرهسازی‪ 4 :‬بیت‬
‫‪1‬‬ ‫‪1 11‬‬
‫‪−7‬‬ ‫‪1001‬‬ ‫‪−7‬‬ ‫‪1001‬‬

‫‪+‬‬ ‫‪+5‬‬ ‫‪+‬‬ ‫‪0101‬‬ ‫‪−‬‬ ‫‪+5‬‬ ‫‪+‬‬ ‫‪1011‬‬

‫‪−2‬‬ ‫‪1110 = 0010 = −2‬‬ ‫‪−12‬‬ ‫‪10100 = +4‬‬

‫سرریز رخ نداده‬ ‫سرریز رخ داده‬

‫‪1‬‬
‫‪−7‬‬ ‫‪1001‬‬

‫‪−‬‬ ‫‪−5‬‬ ‫‪+‬‬ ‫‪0101‬‬

‫‪−2‬‬ ‫‪1110 = −0010 = −2‬‬

‫سرریز رخ نداده‬ ‫سیستم اعداد و کدگذاری‬ ‫‪39‬‬


‫تبدیل عدد دهدهی به دودویی‬

‫بدون عالمت‬

‫صحیح‬
‫عالمتدار‬

‫اعداد‬

‫بدون عالمت‬

‫اعشاری‬

‫عالمتدار‬

‫سیستم اعداد و کدگذاری‬ ‫‪40‬‬


‫تبدیل اعداد اعشاری‬
‫• دو روش برای ذخیرهسازی اعداد اعشاری وجود دارد‪:‬‬
‫• روش ممیز ثابت‬
‫• روش ممیز شناور‬

‫سیستم اعداد و کدگذاری‬ ‫‪41‬‬


‫تبدیل اعداد اعشاری به دودویی با روش ممیز ثابت‬
‫• در این روش مکان ممیز ثابت است‪ .‬اعداد صحیح قبل از ممیز و اعداد اعشاری بعد از ممیز قرار دارد‪.‬‬

‫‪.‬‬

‫بخش صحیح‬ ‫بخش اعشاری‬


‫ممیز‬

‫• روش تبدیل‪:‬‬
‫• تبدیل قسمت صحیح به مبنای دو همانند اعداد صحیح‬
‫• تبدیل قسمت اعشاری به مبنای دو به صورت زیر‪:‬‬
‫• ضرب قسمت اعشاری به ‪ ،2‬قسمت صحیح نتیجه ذخیره نموده‪ ،‬قسمت اعشاری مجدد در دو ضرب میشود‪.‬‬
‫• این روند تا زمانی که به قسمت اعشاری صفر شود یا به توالی از اعداد برسیم ادامه مییابد‪.‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪42‬‬


‫تبدیل اعداد اعشاری به دودویی با روش ممیز ثابت‬
‫? = ‪(124.25)10‬‬ ‫‪0.25 × 2 = 0.5‬‬
‫‪2‬‬
‫‪(124.25)10 = 0111100.01‬‬ ‫‪2‬‬
‫‪0.5 × 2 = 1.0‬‬
‫‪(124)10 = 01111100‬‬ ‫‪2‬‬

‫‪0.25‬‬ ‫‪10‬‬ ‫‪= .01‬‬


‫اعداد منفی به‬
‫صورت متمم ‪2‬‬
‫ذخیره میشود‪.‬‬
‫? = ‪(−0.1875)10‬‬ ‫‪2‬‬ ‫‪0.1875 × 2 = 0.375‬‬

‫‪0.375 × 2 = 0.75‬‬ ‫‪(0.1875)10 = 0.0011‬‬ ‫‪2‬‬

‫‪0.75 = 1.5‬‬ ‫‪(−0.1875)10 = 1.1101‬‬ ‫‪2‬‬

‫‪0.5 = 1.0‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪43‬‬


‫تمرین‬

‫? = ‪(75.20)10‬‬ ‫‪2‬‬

‫? = ‪(101.023)10‬‬ ‫‪2‬‬

‫? = ‪(−53.1)10‬‬ ‫‪2‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪44‬‬


‫تبدیل اعداد اعشاری دودویی به دهدهی‬
‫• ضرب هر رقم در ‪ 2‬به توان ارزش مکانی و جمع حاصلضربها‬
‫• ارزش مکانهای بعد از ممیز از ‪ -1‬آغاز میشود‪.‬‬

‫‪1010.110‬‬ ‫‪2‬‬ ‫? =‬ ‫‪10‬‬

‫‪1010.110‬‬ ‫‪2‬‬ ‫‪= 1 × 23 + 1 × 21 . 1 × 2−1 + 1 × 2−2 = 10.75‬‬

‫‪01111100.01‬‬ ‫‪2‬‬ ‫? =‬ ‫‪10‬‬

‫‪01111100.01‬‬ ‫‪2‬‬ ‫‪= 1 × 27 + 1 × 26 + 1 × 25 + 1 × 24 + 1 × 23 . 0 × 2−1 + 1 × 2−2 = 124.25‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪45‬‬


‫تمرین‬

‫‪10011.111‬‬ ‫‪2‬‬ ‫? =‬ ‫‪10‬‬

‫‪101111.1010‬‬ ‫‪2‬‬ ‫? =‬ ‫‪10‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪46‬‬


‫تبدیل اعداد اعشاری به دودویی با روش ممیز شناور‬
‫• معایب روش ممیز ثابت‪:‬‬
‫• محدوده محدودی دارد‪.‬‬
‫• فضای بسیاری برای ذخیرهسازی اعداد خیلی کوچک (‪ )0.23 × 10−32‬و خیلی بزرگ (‪ )0.5 × 1023‬نیاز است‪.‬‬
‫• برای رفع معایب روش ممیز ثابت‪ ،‬روش ممیز شناور ایجاد شد‪.‬‬
‫• به طور کلی‪ ،‬اعداد اعشاری ممیز شناور به صورت علمی نمایش داده میشوند‪.‬‬
‫𝑒𝑏 × 𝑚 = 𝑛‬

‫‪mantissa‬‬ ‫‪base‬‬ ‫‪exponential‬‬

‫• در مبنای ‪ b=2 2‬است‪.‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪47‬‬


‫تبدیل اعداد اعشاری به دودویی با روش ممیز شناور‬
‫• دو نوع ممیز شناور داریم‪:‬‬
‫• ‪ 32‬بیت (‪)Float‬‬
‫• ‪ 64‬بیت (‪)Double‬‬

‫• به منظور تبدیل اعداد اعشاری دهدهی ابتدا باید اعداد را به حالت دودویی تبدیل نموده (مشابه ممیز ثابت‪ ،‬فقط اعداد منفی‬
‫همانند اعداد مثبت برخورد میشود)‪ ،‬سپس مطابق استاندارد ‪ IEEE754‬به شکل زیر تبدیل میکنیم‪.‬‬

‫𝑠‬
‫‪𝑛 = −1‬‬ ‫‪× 1. 𝑚 × 2𝑒+127‬‬ ‫‪Float‬‬

‫‪𝑛 = −1‬‬ ‫𝑠‬ ‫‪× 1. 𝑚 × 2𝑒+1023‬‬ ‫‪Double‬‬

‫• سپس در کامپیوتر سه بخش زیر ذخیره میشود‪.‬‬

‫بخش عالمت‪s‬‬
‫بخش نما ‪e+127‬‬ ‫بخش مانتیس ‪m‬‬
‫سیستم اعداد و کدگذاری‬ ‫‪48‬‬
‫تبدیل اعداد اعشاری به دودویی با روش ممیز شناور‬

‫محدوده عددی‬ ‫تعداد بیت‬ ‫تعداد بیت‬ ‫تعداد بیت‬ ‫تعداد کل بیتها‬ ‫فرمت‬
‫مانتیس‬ ‫نما‬ ‫عالمت‬
‫‪±1.17549 × 10−38‬‬ ‫‪23‬‬ ‫‪8‬‬ ‫‪1‬‬ ‫‪32‬‬ ‫نوع ‪Float‬‬
‫تا‬
‫‪±3.402824 × 10+38‬‬
‫‪±2.22507385850720 × 10−308‬‬ ‫‪52‬‬ ‫‪11‬‬ ‫‪1‬‬ ‫‪64‬‬ ‫نوع ‪Double‬‬
‫تا‬
‫‪±1.79769313486232 × 10+308‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪49‬‬


‫تبدیل اعداد اعشاری به دودویی با روش ممیز شناور‬

‫‪0‬‬
‫‪228‬‬ ‫‪10‬‬ ‫‪= 11100100‬‬ ‫‪2‬‬ ‫‪= −1‬‬ ‫‪× 1.1100100 × 27+127‬‬ ‫‪0‬‬ ‫‪10000110‬‬ ‫‪11001000000000000000000‬‬

‫‪1‬‬
‫‪−(0.1875)10 = − 0.0011 2 = −1‬‬ ‫‪× 1.1 × 2−3+127‬‬ ‫‪1‬‬ ‫‪01111100‬‬ ‫‪10000000000000000000000‬‬

‫‪(7.875)10 = 111.111‬‬ ‫‪= −1‬‬ ‫‪0‬‬ ‫‪× 1.11111 × 22+127‬‬


‫‪2‬‬ ‫‪0‬‬ ‫‪10000001‬‬ ‫‪11111000000000000000000‬‬

‫‪1‬‬
‫‪−(8.625)10 = − 1000.101 2 = −1‬‬ ‫‪× 1.000101 × 23+127‬‬
‫‪1‬‬ ‫‪10000010‬‬ ‫‪00010100000000000000000‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪50‬‬


‫تمرین‬

‫? = ‪(75.20)10‬‬ ‫‪2‬‬

‫? = ‪(101.023)10‬‬ ‫‪2‬‬

‫? = ‪(−53.1)10‬‬ ‫‪2‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪51‬‬


‫کد ‪BCD‬‬
‫• اگرچه سیستم دودویی طبیعیترین سیستم برای یک کامپیوتر است‪ ،‬ولی بسیاری از مردم به سیستم دهدهی عادت دارند‪.‬‬
‫• از سوی دیگر تبدیل دهدهی به دودویی خیلی ساده نیست‪.‬‬
‫• راهحل این مشکل استفاده از روش کدگذاری ‪( BCD‬دهدهی کد شده به دودویی) است‪.‬‬
‫• بزرگترین مزیت استفاده از کد ‪ ،BCD‬راحتتر کردن تبدیل اعداد باینری و دهدهی به یکدیگر است‪.‬‬
‫• در کد ‪ BCD‬هر رقم دهدهی با ‪ 4‬بیت دودویی جایگزین میشود‪.‬‬
‫• در این کد تنها ارقام ‪ 9-0‬معتبر است‪ .‬بنابراین ارقام ‪ 15-10‬غیر معتبر است‪.‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪52‬‬


‫کد ‪BCD‬‬

‫رقم دهدهی‬ ‫رقم ‪BCD‬‬


‫‪0‬‬ ‫‪0000‬‬
‫‪1‬‬ ‫‪0001‬‬
‫‪2‬‬ ‫‪0010‬‬
‫‪3‬‬ ‫‪0011‬‬
‫‪4‬‬ ‫‪0100‬‬
‫‪5‬‬ ‫‪0101‬‬
‫‪6‬‬ ‫‪0110‬‬
‫‪7‬‬ ‫‪0111‬‬
‫‪8‬‬ ‫‪1000‬‬
‫‪9‬‬ ‫‪1001‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪53‬‬


‫کد ‪BCD‬‬

‫‪98765 = 1001 1000 0111 0110 0101‬‬

‫‪724 = 0111 0010 0100‬‬

‫‪3581 = 0011 0101 1000 0001‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪54‬‬


‫جمع دو عدد ‪BCD‬‬
‫• برای جمع دو عدد ‪ ،BCD‬از سمت راست چهار رقم چهار رقم جمع میکنیم‪.‬‬
‫• چنانچه نتیجهی جمع چهار رقم غیرمجاز شد (یعنی غیر از اعداد ‪ 9-0‬بود) با عدد ‪ )0110( 6‬جمع میکنیم‪.‬‬

‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬


‫‪9935‬‬ ‫‪1001 1001 0011 0101‬‬
‫‪+‬‬ ‫‪+‬‬
‫‪9387‬‬ ‫‪1001 0011 1000 0111‬‬
‫‪19322‬‬ ‫‪0011 1101 1100 1100‬‬
‫‪+‬‬
‫‪0110 0110 0110 0110‬‬
‫‪1 1001 0011 0010 0010‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪55‬‬


‫تمرین‬

‫‪3527‬‬
‫‪+‬‬
‫‪2564‬‬

‫‪8457‬‬
‫‪+‬‬
‫‪3216‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪56‬‬


‫تبدیل حروف و عالئم به عدد دودویی‬
‫• به منظور ورود حروف و عالئم از روشهای کدگذاری همچون کد اسکی(‪ )ASCII‬یا کد یونیکد (‪ )unicode‬استفاده میشود‪.‬‬
‫• در روش کد اسکی برای هر کاراکتر (حرف‪ ،‬رقم‪ ،‬عالئم) یک عدد دهدهی اختصاص مییابد که توسط همه رایانه های تولیدی‬
‫در سراسر جهان درک میشود‪.‬‬
‫• سپس مبنای دو کد اسکی وارد کامپیوتر میشود‪.‬‬
‫• به عنوان مثال کد اسکی ‪ A‬عدد ‪ 65‬است‪ Z ،‬عدد ‪ 90‬است‪ a ،‬عدد ‪ z ،97‬عدد ‪ 0 ،122‬عدد ‪ 9 ،48‬عدد ‪ 57‬است‪.‬‬
‫• کد اسکی میتواند ‪ 128‬کاراکتر را در ‪ 7‬بیتی کد کند‪ .‬شامل ‪ 52‬حرف بزرگ و کوچک و ‪ 10‬رقم عددی الفبای رومی‪ ،‬به‬
‫عالوه کاراکترهای نقطه گذاری و برخی نمادهای دیگر‪.‬‬

‫‪𝐴𝑙𝑖 = 01000001 01101100 01101101‬‬

‫‪𝑏𝑜𝑜𝑘 = 01100010 01101111 01101111 01101011‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪57‬‬


‫جدول کد اسکی‬

‫سیستم اعداد و کدگذاری‬ ‫‪58‬‬


‫کد اسکی توسعه یافته (‪)Extended ASCII‬‬
‫• این کد میتواند ‪ 255‬کاراکتر را در ‪ 8‬بیت کد نماید‪.‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪59‬‬


‫یونیکد (‪)Unicode‬‬
‫• کد اسکی کارکترهای زبانهای دیگر همچون فارسی و چینی و ‪ ...‬را پوشش نمیدهد‪ .‬برای حل این مشکل روش کدگذاری‬
‫یونیکد معرفی شد‪.‬‬
‫• یونیکد در واقع استانداردی برای بازنمایی متون به بیشتر زبانهای دنیاست‪.‬‬
‫• در یونیکد امکان نمایش ‪ 1114112‬کاراکتر مختلف وجود دارد‪.‬‬
‫• سه نوع رایج آن عبارت است از‪:‬‬
‫• ‪UTF-8‬‬
‫• ‪UTF-16‬‬
‫• ‪UTF-32‬‬
‫• به طور عمومی یک کد کاراکتر یونیکد توسط یک حرف التین ‪U‬و عالمت ‪ +‬و شماره کد کاراکتر نمایش داده میشود‪.‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪60‬‬


‫سیستم اعداد و کدگذاری‬ ‫‪61‬‬
‫مثال‬
‫علی‬

‫‪𝑢 + 0639 𝑢 + 0644‬‬ ‫𝑐𝑐‪𝑢 + 06‬‬

‫‪𝑢 + 0639 = 01110101 00101011 00110000 00110110 00110011 00111001‬‬

‫‪𝑢 + 0644 = 01110101 00101011 00110000 00110110 00110100 00110100‬‬

‫‪𝑢 + 06𝑐𝑐 = 01110101 00101011 00110000 00110110 01100011 01100011‬‬

‫سیستم اعداد و کدگذاری‬ ‫‪62‬‬

You might also like