باینری و دسیمال ( و نیز اکتال و هگزا دسیمال شکلهای مختلف برای نمایش یک چیز واحد هستند. وقتی ما از عددی مثل ۲۲۵ صحبت میکنیم، منظورمان یک مقدار عددی است که در مبنای ده ( یعنی در مبنای دسیمال به صورت ۲۲۵ نمایش داده میشود. اما اگر همین عدد را بخواهیم در مبنای دو ( یعنی به صورت باینری نمایش دهیم، حاصل کار ۱۱۱۰۰۰۰۱ خواهد بود و اگر در مبنای ۸ ( یعنی به صورت اکتال نمایش دهیم، حاصل ۳۴۱ میشود و اگر در مبنای ۱۶ ( یعنی هگزادسیمال نمایش دهیم، جواب E1 خواهد شد. دقت کنید که ۲۲۵ و ۱۱۱۰۰۰۰۱ و ۳۴۱ و E1 همگی بیانگر یک مقدار یکسان هستند که در شکلها ( مبناها ی مختلف بیان شدهاند، گرچه بیان اعداد در مبنای ده، در زندگی روزمره کاربرد کامل و غالب دارد.
- چگونه اعداد در مبنای ده ( دسیمال را به اعداد در مبنای دو ( باینری تبدیل کنیم؟
اولین سوالی که پیش میآید این است که اصلا چه لزومی به این کار هست؟ وقتی در زندگی روزمره مبنای ۱۰ را به کار میبریم، استفاده از مبنای ۲ چه کاربردی خواهد داشت؟ جواب این است که در مباحث کامپیوتری، مبنای ۲ مبنای غالب است ( به دلیل مسائل تکنیکی بنابراین لزوم تبدیل اعداد در مبنای ۱۰ به اعداد در مبنای ۲ احساس میشود.
حال به روش کار میپردازیم:
فرض کنید که میخواهیم عدد ۲۵۳ که در مبنای ده ( دسیمال = دهدهی میباشد را در مبنای دو ( باینری = دودویی نمایش دهیم. برای این کار باید عدد مورد نظر را ( یعنی ۲۵۳ بر عدد ۲ تقسیم کنیم و باقیماندهها را یادداشت کرده و کار را روی خارج قسمت ادامه دهیم ( یعنی خارج قسمت را بر دو تقسیم کنیم و باز باقیمانده را یادداشت کنیم و ... تا جایی که خارج قسمت عدد صفر بشود.
همانطور که ملاحظه میکنید، باقیماندهها را از یادداشت میکنیم به این صورت که اولین باقیمانده را در سمت راست و آخرین باقیمانده را در سمت چپ مینویسیم و به این صورت عدد ۲۵۳ که دسیمال است معادلش در باینری به شکل ۱۱۱۱۱۱۰۱ خواهد بود.
فرض کنید که انتظار داریم حاصل تبدیل عددی در مبنای ده به شکل باینری، عددی ۸ رقمی شود، در حالیکه با تقسیمهای متوالی آن عدد دسیمال بر عدد دو، مثلا فقط ۶ عدد بدست آمده است، در این حالت آن ۶ رقم رو به طرز صحیح نوشته و در سمت چپ، به تعداد دلخواه عدد ۰ ( یعنی صفر قرار میدهیم. مثلا اگر جواب ۱۱۱۰۰۱ شده باشد، میتوانیم آنرا به شکل ۰۱۱۱۰۰۱ یا ۰۰۱۱۱۰۰۱ یا ۰۰۰۱۱۱۰۰۱ یا حتی ۰۰۰۰۰۰۰۰۰۰۰۰۰۱۱۱۰۰۱ نمایش دهیم!
تبدیل باینری به دسیمال
یعنی در واقع دقیقا عکس عمل بالایی.
اگر دقت کنید در شکل بالا قسمتی که به شماره ۱ علامت خورده است، همین را نشان میدهد. فرض کنید که میخواهیم ۱۱۱۱۱۱۰۱ در مبنای دو را تبدیل کنیم و ببینیم که در مبنای ده به چه شکلی ظاهر میشود. برای این کار میآییم و از اولین رقم سمت راست شروع میکنیم. اولین رقم را در عدد ۱ ضرب میکنیم، که میشود ۱*۱=۲
حالا میرسیم به رقم دوم از راست که ۰ است. رقم دوم را در ۲ ضرب میکنیم. بعد رقم سوم را در ۴ ضرب میکنیم. رقم چهارم را در ۸ ضرب میکنیم و... یعنی به ترتیب رقمها را در ۱ و ۲ و ۴ و ۸ و ۱۶ و ... ضرب میکنیم و نتایج حاصله رو با هم جمع میکنیم. یعنی میشود:
( 11111101 2= ( ???? 10
( 11111101 2= 1*1 + 0*2 + 1*4 + 1*8 + 1*16 + 1*32 + 1*64 + 1*128 = ( 253 10
یعنی نمایش عدد به صورت دسیمال میشود: ۲۵۳
- تبدیل اعداد در مبناهای دیگر
اصول کار همینه! دیدید که وقتی میخواستیم عددی را از مبنای ده به مبنای دیگر ( مثلا مبنای دو تبدیل کنیم، از تقسیم استفاده کردیم. و وقتی میخواستیم عددی را از مبنای غیر از ده به مبنای ۱۰ تبدیل کنیم، از ضرب استفاده شد. این روش را در حالتی استفاده میکنیم که یکی از مبناهای مورد نظر ۱۰ باشد.
الف- مثلا بیایید، عدد ۲۲۵ را به مبنای ۸ ( یعنی اکتال بریم. چون میخواهیم از دسیمال به غیر دسیمال ( اکتال تبدیل کنیم، روش کار تقسیم است. ولی اینبار به جای تقسیم کردن به ۲ باید بر ۸ تقسیم کنیم چون میخواهیم به مبنای ۸ ببریم. دقت کنید که در توضیحات پایین منظورمان از اعدادی که با کاما جدا کردهایم، اولی خارج قسمت و دومی باقیمانده تقسیم است:
225 / 8 --> 28,1
28 / 8 --> 3,4
3 / 8 --> 0,3
خوب پس جواب شد ۳۴۱ ، یعنی ۲۲۵ که دسیمال بود به صورت اکتال میشود ۳۴۱
ب- حالا بیایید که همین ۳۴۱ را که اکتال است به حالت قبلی یعنی دسیمال تبدیل کنیم. چون از مبنای غیر از ده به مبنای ده میخواهیم تبدیل کنیم، باید ضرب کنیم. ولی به جای ضرب کردن در ۱ و ۲ و ۴ و ۸ و ... باید در ۱ و ۸ و ۶۴ و ... ضرب کنیم چون میخواهیم از مبنای ۸ تبدیل را انجام دهیم، نه مبنای ۲ ، مینویسیم:
( 341 8= ( ???? 10
( 341 8= 1*1 + 4*8 + 3*64 = ( 225 10
ج- میخواهیم عدد ۲۲۵ را از مبنای ۱۰ منتقل کنیم به مبنای ۱۶ ( یعنی هگزادسیمال . چون میخواهیم از مبنای ده به مبنایی غیر از ده تبدیل کنیم، باید از تقسیم استفاده کنیم:
225 / 16 --> 14,1
14 / 16 --> 0,14
خوب اولین رقم از سمت راست باید باشد: ۱ و عدد دوم باید باشد ۱۴
دقت کنید که اینبار عددی دو رقمی را به عنوان باقیمانده بدست آوردیم و نوشتن ایندو کنار هم به صورت ۱۴۱ اشتباه خواهد بود. برای این منظور در مبنای ۱۶ ( هگزادسیمال برای باقیماندههای ۱۰ تا ۱۵ از حروف استفاده میشود. یعنی A = ۱۰ و B = ۱۱ و C = ۱۲ و D = ۱۳ و E = 14 و F = ۱۵
پس نتیجه تبدیل عدد ۲۲۵ از مبنای ۱۰ به مبنای ۱۶ میشود: E1
- تبدیل از مبنای غیر دسیمال به یک مبنای دیگر غیر دسیمال
در تمام موارد بالا دیدید که مبنای ده ( دسیمال یک پای ثابت بود. فرض کنید میخواهیم از عددی را از مبنای ۸ به مبنای ۱۶ تبدیل کنیم. برای اینکار از روش مستقیم هم میتوان استفاده کرد ولی روش راحتتر این است که اول عدد را از مبنای ۸ به مبنای ۱۰ تبدیل کنیم و بعد بیاییم عدد حاصله را که الان در مبنای ۱۰ هست به مبنای ۱۶ تبدیل کنیم. یعنی از مبنای ۱۰ به عنوان مبنای واسط استفاده کنیم. خودتون یک مثال حل کنید
(تصاویر و نمودار در فایل اصلی موجود است)