hatef_4541
14-03-2006, 01:16
مقدمه
باينری و دسيمال ( و نيز اکتال و هگزا دسيمال) شکلهای مختلف برای نمايش يک چيز واحد هستند. وقتی ما از عددی مثل ۲۲۵ صحبت میکنيم، منظورمان يک مقدار عددی است که در مبنای ده ( يعنی در مبنای دسيمال ) به صورت ۲۲۵ نمايش داده میشود. اما اگر همين عدد را بخواهيم در مبنای دو ( يعنی به صورت باينری ) نمايش دهيم، حاصل کار ۱۱۱۰۰۰۰۱ خواهد بود و اگر در مبنای ۸ ( يعنی به صورت اکتال ) نمايش دهيم، حاصل ۳۴۱ میشود و اگر در مبنای ۱۶ ( يعنی هگزادسيمال ) نمايش دهيم، جواب E1 خواهد شد. دقت کنيد که ۲۲۵ و ۱۱۱۰۰۰۰۱ و ۳۴۱ و E1 همگی بيانگر يک مقدار يکسان هستند که در شکلها ( مبناها )ی مختلف بيان شدهاند، گرچه بيان اعداد در مبنای ده، در زندگی روزمره کاربرد کامل و غالب دارد.
- چگونه اعداد در مبنای ده ( دسيمال ) را به اعداد در مبنای دو ( باينری ) تبديل کنيم؟
اولين سوالی که پيش میآيد اين است که اصلا چه لزومی به اين کار هست؟ وقتی در زندگی روزمره مبنای ۱۰ را به کار میبريم، استفاده از مبنای ۲ چه کاربردی خواهد داشت؟ جواب اين است که در مباحث کامپيوتری، مبنای ۲ مبنای غالب است ( به دليل مسائل تکنيکی ) بنابراين لزوم تبديل اعداد در مبنای ۱۰ به اعداد در مبنای ۲ احساس میشود.
حال به روش کار میپردازيم:
فرض کنيد که میخواهيم عدد ۲۵۳ که در مبنای ده ( دسيمال = دهدهی ) میباشد را در مبنای دو ( باينری = دودويی ) نمايش دهيم. برای اين کار بايد عدد مورد نظر را ( يعنی ۲۵۳ ) بر عدد ۲ تقسيم کنيم و باقيماندهها را يادداشت کرده و کار را روی خارج قسمت ادامه دهيم ( يعنی خارج قسمت را بر دو تقسيم کنيم ) و باز باقيمانده را يادداشت کنيم و ... تا جايی که خارج قسمت عدد صفر بشود.
به شکل زير توجه کنيد:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
همانطور که ملاحظه میکنيد، باقيماندهها را از يادداشت میکنيم به اين صورت که اولين باقيمانده را در سمت راست و آخرين باقيمانده را در سمت چپ مینويسيم و به اين صورت عدد ۲۵۳ که دسيمال است معادلش در باينری به شکل ۱۱۱۱۱۱۰۱ خواهد بود.
فرض کنيد که انتظار داريم حاصل تبديل عددی در مبنای ده به شکل باينری، عددی ۸ رقمی شود، در حاليکه با تقسيمهای متوالی آن عدد دسيمال بر عدد دو، مثلا فقط ۶ عدد بدست آمده است، در اين حالت آن ۶ رقم رو به طرز صحيح نوشته و در سمت چپ، به تعداد دلخواه عدد ۰ ( يعنی صفر ) قرار میدهيم. مثلا اگر جواب ۱۱۱۰۰۱ شده باشد، میتوانيم آنرا به شکل ۰۱۱۱۰۰۱ يا ۰۰۱۱۱۰۰۱ يا ۰۰۰۱۱۱۰۰۱ يا حتی ۰۰۰۰۰۰۰۰۰۰۰۰۰۱۱۱۰۰۱ نمايش دهيم!
سوال: برای تمرين دو عدد ۱۳۴ و ۸۰ را به شکل باينری در آوريد.
جواب: 10000110 و 01010000
- تبديل باينری به دسيمال
يعنی در واقع دقيقا عکس عمل بالايی.
اگر دقت کنيد در شکل بالا قسمتي که به شماره ۱ علامت خورده است، همين را نشان ميدهد. فرض کنيد که ميخواهيم ۱۱۱۱۱۱۰۱ در مبناي دو را تبديل کنيم و ببينيم که در مبناي ده به چه شکلي ظاهر ميشود. براي اين کار ميآييم و از اولين رقم سمت راست شروع ميکنيم. اولين رقم را در عدد ۱ ضرب ميکنيم، که ميشود ۱*۱=۲
حالا ميرسيم به رقم دوم از راست که ۰ است. رقم دوم را در ۲ ضرب ميکنيم. بعد رقم سوم را در ۴ ضرب ميکنيم. رقم چهارم را در ۸ ضرب ميکنيم و... يعني به ترتيب رقمها را در ۱ و ۲ و ۴ و ۸ و ۱۶ و ... ضرب ميکنيم و نتايج حاصله رو با هم جمع ميکنيم. يعني ميشود:
( 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
- تبديل از مبناي غير دسيمال به يک مبناي ديگر غير دسيمال
در تمام موارد بالا ديديد که مبناي ده ( دسيمال ) يک پاي ثابت بود. فرض کنيد ميخواهيم از عددي را از مبناي ۸ به مبناي ۱۶ تبديل کنيم. براي اينکار از روش مستقيم هم ميتوان استفاده کرد ولي روش راحتتر اين است که اول عدد را از مبناي ۸ به مبناي ۱۰ تبديل کنيم و بعد بياييم عدد حاصله را که الان در مبناي ۱۰ هست به مبناي ۱۶ تبديل کنيم. يعني از مبناي ۱۰ به عنوان مبناي واسط استفاده کنيم. خودتون يک مثال حل کنيد!
- حالگيري!
تمام مطالب اين درس رو ميتونيد به ماشينحساب کامپيوترتون انجام دهيد.
مثلا در ويندوز ماشين حساب رو باز کرده و بعد از منوي VIEW بايد گزينه Scientific يعني ماشينحساب علمي رو انتخاب ميکنيد و بعد ميتونيد گزينههاي Bin و Oct و Dec و Hex را ببينيد که همان باينري و اکتال و دسيمال و هگزادسيمال است. حالا با خيال راحت تبديلات رو انجام دهيد.
منبع: tur2.com
باينری و دسيمال ( و نيز اکتال و هگزا دسيمال) شکلهای مختلف برای نمايش يک چيز واحد هستند. وقتی ما از عددی مثل ۲۲۵ صحبت میکنيم، منظورمان يک مقدار عددی است که در مبنای ده ( يعنی در مبنای دسيمال ) به صورت ۲۲۵ نمايش داده میشود. اما اگر همين عدد را بخواهيم در مبنای دو ( يعنی به صورت باينری ) نمايش دهيم، حاصل کار ۱۱۱۰۰۰۰۱ خواهد بود و اگر در مبنای ۸ ( يعنی به صورت اکتال ) نمايش دهيم، حاصل ۳۴۱ میشود و اگر در مبنای ۱۶ ( يعنی هگزادسيمال ) نمايش دهيم، جواب E1 خواهد شد. دقت کنيد که ۲۲۵ و ۱۱۱۰۰۰۰۱ و ۳۴۱ و E1 همگی بيانگر يک مقدار يکسان هستند که در شکلها ( مبناها )ی مختلف بيان شدهاند، گرچه بيان اعداد در مبنای ده، در زندگی روزمره کاربرد کامل و غالب دارد.
- چگونه اعداد در مبنای ده ( دسيمال ) را به اعداد در مبنای دو ( باينری ) تبديل کنيم؟
اولين سوالی که پيش میآيد اين است که اصلا چه لزومی به اين کار هست؟ وقتی در زندگی روزمره مبنای ۱۰ را به کار میبريم، استفاده از مبنای ۲ چه کاربردی خواهد داشت؟ جواب اين است که در مباحث کامپيوتری، مبنای ۲ مبنای غالب است ( به دليل مسائل تکنيکی ) بنابراين لزوم تبديل اعداد در مبنای ۱۰ به اعداد در مبنای ۲ احساس میشود.
حال به روش کار میپردازيم:
فرض کنيد که میخواهيم عدد ۲۵۳ که در مبنای ده ( دسيمال = دهدهی ) میباشد را در مبنای دو ( باينری = دودويی ) نمايش دهيم. برای اين کار بايد عدد مورد نظر را ( يعنی ۲۵۳ ) بر عدد ۲ تقسيم کنيم و باقيماندهها را يادداشت کرده و کار را روی خارج قسمت ادامه دهيم ( يعنی خارج قسمت را بر دو تقسيم کنيم ) و باز باقيمانده را يادداشت کنيم و ... تا جايی که خارج قسمت عدد صفر بشود.
به شکل زير توجه کنيد:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
همانطور که ملاحظه میکنيد، باقيماندهها را از يادداشت میکنيم به اين صورت که اولين باقيمانده را در سمت راست و آخرين باقيمانده را در سمت چپ مینويسيم و به اين صورت عدد ۲۵۳ که دسيمال است معادلش در باينری به شکل ۱۱۱۱۱۱۰۱ خواهد بود.
فرض کنيد که انتظار داريم حاصل تبديل عددی در مبنای ده به شکل باينری، عددی ۸ رقمی شود، در حاليکه با تقسيمهای متوالی آن عدد دسيمال بر عدد دو، مثلا فقط ۶ عدد بدست آمده است، در اين حالت آن ۶ رقم رو به طرز صحيح نوشته و در سمت چپ، به تعداد دلخواه عدد ۰ ( يعنی صفر ) قرار میدهيم. مثلا اگر جواب ۱۱۱۰۰۱ شده باشد، میتوانيم آنرا به شکل ۰۱۱۱۰۰۱ يا ۰۰۱۱۱۰۰۱ يا ۰۰۰۱۱۱۰۰۱ يا حتی ۰۰۰۰۰۰۰۰۰۰۰۰۰۱۱۱۰۰۱ نمايش دهيم!
سوال: برای تمرين دو عدد ۱۳۴ و ۸۰ را به شکل باينری در آوريد.
جواب: 10000110 و 01010000
- تبديل باينری به دسيمال
يعنی در واقع دقيقا عکس عمل بالايی.
اگر دقت کنيد در شکل بالا قسمتي که به شماره ۱ علامت خورده است، همين را نشان ميدهد. فرض کنيد که ميخواهيم ۱۱۱۱۱۱۰۱ در مبناي دو را تبديل کنيم و ببينيم که در مبناي ده به چه شکلي ظاهر ميشود. براي اين کار ميآييم و از اولين رقم سمت راست شروع ميکنيم. اولين رقم را در عدد ۱ ضرب ميکنيم، که ميشود ۱*۱=۲
حالا ميرسيم به رقم دوم از راست که ۰ است. رقم دوم را در ۲ ضرب ميکنيم. بعد رقم سوم را در ۴ ضرب ميکنيم. رقم چهارم را در ۸ ضرب ميکنيم و... يعني به ترتيب رقمها را در ۱ و ۲ و ۴ و ۸ و ۱۶ و ... ضرب ميکنيم و نتايج حاصله رو با هم جمع ميکنيم. يعني ميشود:
( 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
- تبديل از مبناي غير دسيمال به يک مبناي ديگر غير دسيمال
در تمام موارد بالا ديديد که مبناي ده ( دسيمال ) يک پاي ثابت بود. فرض کنيد ميخواهيم از عددي را از مبناي ۸ به مبناي ۱۶ تبديل کنيم. براي اينکار از روش مستقيم هم ميتوان استفاده کرد ولي روش راحتتر اين است که اول عدد را از مبناي ۸ به مبناي ۱۰ تبديل کنيم و بعد بياييم عدد حاصله را که الان در مبناي ۱۰ هست به مبناي ۱۶ تبديل کنيم. يعني از مبناي ۱۰ به عنوان مبناي واسط استفاده کنيم. خودتون يک مثال حل کنيد!
- حالگيري!
تمام مطالب اين درس رو ميتونيد به ماشينحساب کامپيوترتون انجام دهيد.
مثلا در ويندوز ماشين حساب رو باز کرده و بعد از منوي VIEW بايد گزينه Scientific يعني ماشينحساب علمي رو انتخاب ميکنيد و بعد ميتونيد گزينههاي Bin و Oct و Dec و Hex را ببينيد که همان باينري و اکتال و دسيمال و هگزادسيمال است. حالا با خيال راحت تبديلات رو انجام دهيد.
منبع: tur2.com