برنامه نویسی اسمبلی : و همه چیز از صفر و یک آغاز شد (2)

اکنون ما براحتی قادریم هر عددی در مبنای ١٠ را به عددی در مبنای ٢ تبدیل کنیم. ولی عکس این فرآیند چگونه است؟

عدد١٠٠١١١٠١را در نظر بگیرید. قصد داریم این عدد را به مبنای ١٠ تبدیل کنیم. از سمت راست شروع میکنیم. عدد اول را که ١ است، در ٢ به توان ٠ صربمیکنیم. همانطور که میدانید، ٢ به توان ٠ (0^2) برابر است با یک. سپس عدد بعدی را که صفر است در 2 به توان 1 ضرب میکنیم. هر عدد در صفر برابر است با صفر. عدد بعدی 1 است که در 2 به توان 2 ضرب میشود. حاصل 4 است. عدد بعدی که 1 است در 2 به توان 3 ضرب میشود. حاصل 8 است. به همین ترتیب ادامه میدهیم که معادله زیر حاصل میشود :

(1*0^2) + (0*1^2)+(1*2^2)+(1*3^2)+(1*4^2)+(0*5^2)+(0*6^2)+(1*7^2)

حاصل عبارت بالا برابر است با :

1 + 0 + 4 + 8 + 16 + 0 + 0 + 128

که مجموع این اعداد 157 است.

کاملاً روشن است که با شروع از سمت راست، عدد اول در 1، عدد دوم در 2، عدد سوم در چهار، عدد چهارم در 8، عدد پنجم در 16، عدد ششم در 32، عدد بعدی در 64، عدد بعدی در 128، عدد بعدی در 256 و ... ضرب میشوند.

پس شما براحتی میتوانید با ضرب و جمع این اعداد به مبنای 10 دست پیدا کنید.

ولی سیستم عدد نویسی و مبنای دیگری نیز وجود دارد که در برنامه نویسی بسیار بسیار کاربردی است. این مبنا، مبنای 16 است. مبنای 16 برای جلوگیری از عدد نویسی های طولانی و آدرس دهی ساده تر حافظه مورد استفاده قرار میگیرد.

در مبنای 16، اعداد صفر تا  9 وجود دارند. عدد 10 با نماد A، عدد 11 با نماد B، عدد 12 با نماد C، عدد 13 با نماد D، عدد 14 با نماد E و عدد 15 با نماد F نمایش داده میشود.

تبدیل از مبنای 16 به مبنای 10 بسیار ساده است و از قانون بالا برای مبنای 2 پیروی میکند. برای مثال عدد 9D در تبدیل به مبنای 10 به این صورت عمل میشود که با شروع از سمت راست، عدد اول در 16 به توان 0 یا 1 ضرب میشود. عدد دوم در 16 به توان 1 یا 16 ضرب میشود. مجموع این دو عدد، نشانگر عدد ما در مبنای 10 است. در این مورد :

D برابر است با 13 که در 1 ضرب میشود و نتیجه آن 13 است. این عدد جمع میشود با :

9 که در 16 به توان 1 یا 16 ضرب میشود و نتیجه آن 144 است. پس عدد نهایی ما در مبنای 10 برابر است با عدد 157.

ولی تبدیل مهمتری برای ما، تبدیل از مبنای 16 به مبنای 2 و برعکس است. خوشبختانه این کار بسیار بسیار ساده است. برای تبدیل از مبنای 16 به مبنای 2، کافی است برای هر رقم، مبنای 2 آنرا که باید چهار رقمی باشد محاسبه کنیم. در مورد عدد 9D به این صورت عمل میکنیم که عدد 9 در مبنای 2 برابر است با 1001 و D یا 13 در مبنای 2 برابر است با 1101 پس عدد 9D در مبنای 2 برابر است با 10011101 که همان عددی است که در ابتدا نوشتیم.

نکته ای که در اینجا وجود دارد، در مورد عدد 91 صدق میکند. عدد 91 در مبنای 16 را به مبنای 2 تبدیل میکنیم. هیچ چیز پیچیده ای وجود ندارد. فقط دقت کنید.

معادل عدد 9 در مبنای 16 به مبنای 2 برابر است با 1001 و معادل عدد 1 در مبنای 16 به مبنای 2 برابر است با 1 . پس آیا عدد ما در مبنای 2 برابر ابا 10011 است؟ قطعاً اینطور نیست. دقت کنید که گفتیم هر عدد باید چهار رقمی باشد. یعنی 9 مبنای 16 در مبنای 2 برابر با 1001 که چهار رقمی است و صحیح است. ولی 1 مبنای 16 در مبنای 2 بصورت 0001 نوشته میشود تا چهار رقمی شود. پس عدد حاصل در مبنای 2 برابر 10010001 خواهد بود.

 

/ 2 نظر / 29 بازدید
معمار آرزوها-نیلوفر

سلام...امیدوارم خوب باشید...من یه وبلاگ قشنگ دارم که از شما دعوت میکنم یه سری بهش بزنید...چون منم از مشتری های وبلاگ شما هستم...میتونیم تبادل لینک داشته باشیم ؟

سحر

در تمام ترديدهاو شايدهايم بدان! تنها تويي که بايدي... تنها تو... حتي به خودت هم دل مبند مي رسد روزي که حتي نگاهت را نمي شناسي به جز حضور تو هيچ چيز اين جهان بيکرانه را جدي نگرفته ام حتي عشق را... سلام روزت بخير باشه مهربون...كلبه قشنگي داري ...دوست داشتي با قدمهاي سبزت كلبه كوچك آبجي سحر هم مزين كن...روز دل انگيزي داشته باشي [گل] ~~>< ღღ♥ღ♥ღღسربلند وپیروز باشید ~~~~>><ღღ♥ღ♥ღღ سربلند وپیروز باشید ~~~~~~>> <ღღ♥ღ♥ღღ سربلند وپیروز باشید ~~~~~~~~~>><ღღ♥ღ♥ღღ سربلند وپیروز باشید ~~~~~~~~~~~~>><ღღ♥ღ♥ღღسربلند وپیروز باشید ~~~~~~~~~~~~~~>> <ღღ♥ღ♥ღღ سربلند وپیروز باشید ~~~~~~~~~~~~~~~~>> <ღღ♥ღ♥ღღ سربلند وپیروز باشید ~~~~~~~~~~~~~~>><ღღ♥ღ♥ღღ سربلند وپیروز باشید ~~~~~~~~~~~~>><ღღ♥ღ♥ღღ سربلند وپیروز باشید ~~~~~~~~~>><ღღ♥ღ♥ღღ سربلند وپیروز باشید ~~~~~~>><ღღ♥ღ♥ღღ سربلند وپیروز باشید ~~~~> ><ღღ♥ღ♥ღღ سربلند وپیروز باشید ~~>< ღღ♥ღ♥ღღ سربلند وپیروز باشید ~~>< ღღ