کنکور کامپیوتر

آموزش تبدیل مبنا بصورت 0 تا 100 به همراه مثال های تشریحی

با توجه به اینکه اکثر دانشجویان رشته کامپیوتر در طول دوران تحصیل با تبدیل مبنا سر و کار دارند، در این صفحه آموزش جامعی از تبدیل اعداد از مبنایی به مبنای دیگر با مثال تشریحی شامل تبدیل از مبنای r به مبنای 10، تبدیل از مبنای 10 به مبنای r و دیگر حالت های تبدیل مبنا ارائه کرده‌ایم

درک چگونگی تبدیل اعداد باینری در مبنای 2 به اعداد دسیمال در مبنای 10 و بطور کلی تبدیل اعداد از مبنایی به مبنای دیگر نیازمند آموزش و مثال تشریحی است که در این مطلب با مثال های گوناگون به آموزش تبدیل مبنای اعداد به یکدیگر می پردازیم.

اعداد باینری و دسیمال؛ نحوه عملکرد مدارهای منطقی

با در نظر گرفتن انواع مدارهای پردازش سیگنال های سیستم که شامل مدارهای غیرخطی، آنالوگ و دیجیتالی هستند، بر خلاف مدارهای آنالوگ و غیرخطی که مسئولیت پردازش سیگنال هایی با دامنه و فرکانس متغیر را بر عهده دارند، مدارهای دیجیتالی سیگنال هایی را پردازش می کنند که فقط دو حالت یا دو سطح ولتاژ دارند و این حالت ها عبارتند از "0 منطقی" و "1 منطقی" . این دو سطح ولتاژ، در مدارهای دیجیتالی و کامپیوتری ارقام باینری نامیده می شوند.

عملکرد مدارهای منطقی کامپیوتری بر اساس اعداد در مبنای 2 (باینری) و مبنای 10 (دسیمال) است. بنابراین دانش تبدیل اعداد از یک مبنا به مبناهای دیگر برای درک بهتر چگونگی کارکرد سیستم های دیجیتال از اهمیت بسیار بالایی برخوردار است.

از آنجایی که عناصر مورد استفاده در سیستم‌های دیجیتال معمولا 2 حالته هستند، مثلا ترانزیستورهای مورد استفاده در سیستم‌های دیجیتال در یکی از دو حالت خاموش یا روشن عمل می‌کنند، دو رقمی بودن مبنا 2 موجب شده است که این مبنا تناسب بیشتر با ذات سیستم‌هایِ دیجیتالِ مورد استفاده در دنیای امروز داشته باشد و در طراحی و تحلیل مدارهای منطقی مبنای 2 از اهمیت زیادی برخوردار باشد. برای کسب اطلاعات بیشتر درباره مدار منطقی (Logic Circuit) می توانید به معرفی، بررسی و آموزش مدار منطقی مراجعه کنید.

تمامی سیستم های کامپیوتری و دیجیتالی بر اساس اعداد باینری و دسیمال (مبنای 2 و مبنای 10) کار می کنند؛ بنابراین دانش تبدیل اعداد از مبنای باینری به دسیمال (مبنای 2 به 10) از اهمیت بالایی برخوردار است.

آشنایی با انواع مبنا و نمایش اعداد در مبناهای مختلف

قبل از اینکه بخواهیم به بررسی دقیق و تخصصی تبدیل یک عدد از یک مبنا به یک مبنا دیگر بپردازیم، نیاز است که کمی با نحوه نمایش اعداد آشنا شویم، برای نمایش اعداد می‌توان از رشته‌ای از Symbol‌ها استفاده کرد، که به هر سیمبل یک رقم می‌گوییم، بعنوان مثال همه افراد عادی، عادت دارند برای بیان و یا نوشتن اعداد از 10 رقم 0 تا 9 استفاده کنند، حال به تعداد سیمبل‌ها (ارقام) برای نمایش یک عدد استفاده می‌کنیم، مبنای آن عدد گفته می‌شود. درست است که انسان‌ها در زندگی روزمره برای بیان و نوشتن اعداد از مبنای 10 (Decimal) استفاده می‌کنند ولی اگر بخواهیم در حالت کلی تر این موضوع را بررسی کنیم، می‌توان برای نمایش اعداد از تعداد ارقامِ بیشتر از 10 یا کمتر از 10 استفاده کرد. بعنوان مثال در مبنای 2 ارقامی که برای بیان، نوشتن و یا نمایش اعداد استفاده می‌شود 0 و 1 است، در مبنای 8 ارقامی که برای بیان، نوشتن و یا نمایش اعداد استفاده می‌شود 0، 1، 2، ...، 7 است. وقتی که مبنا اعدادمان بزرگتر از 10 است، معمولا برای نمایش دادن ارقام بعد از 9 از حروف الفبای انگلیسی استفاده می‌کنند، بعنوان مثال ارقام مورد استفاده برای ساختن اعداد مبنای 16 عبارتند از:

$$ 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F $$

بطور کلی برای نمایش یک عدد در مبنای r از ارقام 0 تا r-1 یعنی r تا رقم استفاده می‌شود. بطور کلی عدد A در مبنای r را می‌توان به صورت زیر نمایش داد:

\[A=\ {(a_{n-1}a_{n-2}...a_1a_0.a_{-1}a_{-2}...a_{-m})}_r\]

در عبارت بالا هر رقم مثل \(a_i\) در مبنای r دارای ارزش \(r^i\) است.

برای تبدیل یک عدد از یک مبنا به یک مبنای دیگر، سه حالت مختلف را در نظر می‌گیریم که در این قسمت به توضیح این حالت‌ها می‌پردازیم.

1- تبدیل از مبنای r به مبنای 10

تبدیل یک عدد از مبنای r به مبنای 10 معادل به دست آوردن مقدار عددی آن عدد است.

برای این منظور هر رقم را در ارزش آن رقم ضرب میکنیم و مقادیر بدست آمده را با هم جمع میکنیم.

\[A=\ {(a_{n-1}a_{n-2}...a_1a_0.a_{-1}a_{-2}...a_{-m})}_r=\ a_{n-1}\times r^{n-1}+a_{n-2}\times r^{n-2}+...\ +a_0\times r^0+a_{-1}\times r^{-1}+...+a_{-m}\times r^{-m}\]

مثال: عدد \(N = (10100)_{2}\) را به مبنای 10 تبدیل کنید.

\[(\overbrace {1}^{4}\overbrace{0}^{3}\overbrace{1}^{2}\overbrace{0}^{1}\overbrace{0}^{0} )=1\times 2^2+1\times 2^4=4+16=20\]

بنابراین:

$$ (10100)_{2} = (20)_{10} $$

مثال: عدد \(N = (A60)_{16}\) را به مبنای 10 تبدیل کنید.

$$ (A60)_{16} = 10\times 16^2 + 6\times16^1 + 0\times16^0 = 2656 $$

بنابراین:

$$ (A60)_{16} = (2656)_{10} $$

2- تبدیل از مبنای 10 به مبنای r

فرض کنید عدد N در مبنای 10 است و می‌خواهیم این عدد را به مبنای r تبدیل کنیم، فرض کنید این کار را انجام داده‌ایم بنابراین در نهایت می‌توانیم عبارت زیر را بنویسیم:

\[{\left(N\right)}_{10}=\ {\left(b_{n-1}b_{n-2}\dots b_1b_0.b_{-1}b_{-2}\dots b_{-m}\right)}_r\ \Rightarrow {\left(N\right)}_{10}=\ b_{n-1}\times r^{n-1}+b_{n-2}\times r^{n-2}+...\ +b_0\times r^0+b_{-1}\times r^{-1}+...+b_{-m}\times r^{-m}\]

حال اگر بتوانیم از درون عبارت زیر \(b_i\) ها را بدست آوریم در واقع توانستهایم محاسبه کنیم که عدد N در مبنای 10 معادل چه عددی در مبنای r است.

با توجه به صحبت‌های بالا می‌توانیم قسمت صحیح و اعشار عدد را بصورت جداگانه نیز نشان دهیم، فرض می‌کنیم بخش صحیح و بخش کسری عدد N به ترتیب برابر باشد با \( N_{I} \) و \( N_{f} \) ، I مخفف Integral یعنی بخش صحیح عدد و f مخفف Fractional یعنی بخش اعشاری عدد است.

\[N_I=\ {\left(b_{n-1}b_{n-2}\dots b_1b_0\right)}_r\ \Rightarrow {\left(N\right)}_I=\ b_{n-1}\times r^{n-1}+b_{n-2}\times r^{n-2}+...\ +b_1\times r^1+b_0\] \[N_f=\ {\left(0.b_{-1}b_{-2}\dots b_{-m}\right)}_r\ \Rightarrow {\left(N\right)}_f=b_{-1}\times r^{-1}+b_{-2}\times r^{-2}+...+b_{-(m-1)}\times r^{-(m-1)}+b_{-m}\times r^{-m}\] \[N=N_I+N_f\]

روش محاسبه \(b_i\) های بخش صحیح عدد و بخش اعشاری عدد متفاوت است، به همین دلیل برای تبدیل عدد N از مبنای 10 به مبنای r ، به صورت زیر عمل می‌کنیم:

  • برای یافتن معادل قسمت صحیح N باید باید \(b_0\)، \(b_1\)، ... تا \(b_{n-1}\) را بیابیم، حال برای این کار، از تقسیم متوالی بخش صحیح عدد N یعنی \( N_{I} \) به مبنای r استفاده می‌کنیم:

    $$ N_{I} = \{[...(b_{i-1}r + b_{i-2})r + ... + b_{2}]r + b_{1}\}r + b_{0} : 0 \le b_{i} \le r - 1 $$

    با توجه به عبارت بالا مشخص است که اگر \( N_{I} \) را بر r تقسیم کنیم، رقم \( b_{0} \) به عنوان باقی‌مانده و \( (...(b_{i-1}r+b_{i-2})r + b_{1} \) به عنوان خارج‌قسمت به دست می‌آید، یعنی با اولین باری که ما عبارت بالا را بر r تقسیم کردیم توانستیم کم ارزش ترین رقم (\( b_{0} \)) صحیح عدد مبنای r معادل با عدد N در مبنای 10 را بدست آوریم. حال با تقسیم خارج‌قسمت بر r رقم \( b_{1} \) به دست می‌آید و این کار تا وقتی به خارج‌قسمتی کوچک‌تر از r برسیم، به همین شکل ادامه پیدا می‌کند، با این کار توانسته‌‌ایم \( b_{i} \) های صحیح را محاسبه کنیم.

  • برای یافتن معادل قسمت اعشاری N باید باید \(b_{-1}\)، \(b_{-2}\)، ... تا \(b_{-m}\) را بیابیم، حال برای این کار، از ضرب متوالی بخش کسری عدد N یعنی \( N_{f} \) در مبنای r استفاده می‌کنیم:

    $$ N_{f} = r^{-1}\{b_{-1}+ r^{-1}[b_{-2}+r^{-1}(b_{-3} + ... )]\} : 0 \le b_{i} \le r - 1 $$

بنابراین اگر \( N_{f} \) را در r ضرب کنیم، رقم \( b_{-1} \) به عنوان بخش صحیح حاصل‌ضرب و \( r^{-1}[b_{-2}+r^{-1}(b_{-3} + ...)] \) به عنوان بخش کسری حاصل‌ضرب به دست می‌آید. با ضرب بخش کسری حاصل در r رقم \( b_{-2} \) به دست می‌آید و این کار تا "∘" شدن بخش کسری، به همین شکل ادامه پیدا می‌کند.

نکته: برای تبدیل یک عدد از مبنای 10 به مبنای r ، بخش صحیح را با تقسیم متوالی بخش صحیح عدد به r و بخش کسری را با ضرب متوالی بخش کسری عدد در r به دست می‌آوریم.

مثال: عدد \( N = (25.625)_{10} \) را به مبنای 2 تبدیل کنید.

تبدیل بخش صحیح: ابتدا عدد 25 را بر 2 تقسیم می‌کنیم، خارج‌قسمت برابر 12 و باقی‌مانده برابر 1 است که این باقی‌مانده بیت \( b_{0} \) را نشان می‌دهد. حال 12 را بر 2 تقسیم می‌کنیم، خارج‌قسمت برابر 6 و باقی‌مانده برابر "∘" است که این باقی‌مانده بیت \( b_{1} \) را نشان می‌دهد. با تقسیم 6 بر 2 خارج‌قسمت و باقی‌مانده به ترتیب برابر 3 و "∘" است که این باقیمانده بیت \( b_{2} \) را نشان می‌دهد. در نهایت با تقسیم 3 بر 2 به باقی‌مانده 1 و خارج‌قسمت 1 می‌رسیم که به ترتیب بیت‌های \( b_{3} \) و \( b_{4} \) را نشان می‌دهد. بنابراین بخش صحیح عدد برابر است با: \( (11001)_{2} \)

تبدیل بخش کسری: ابتدا عدد 0.625 را در 2 ضرب می‌کنیم، که حاصل برابر 1.25 می‌شود. رقم صحیح به دست آمده یعنی 1 اولین بیت پس از ممیز یعنی \( b_{-1} \) را نشان می‌دهد. با ضرب بخش کسری یعنی 0.25 در 2، حاصل برابر 0.5 می‌شود که بخش صحیح یعنی "∘" بیت \( b_{-2} \) را نشان می‌دهد. در نهایت با ضرب بخش کسری 0.5 در 2، بیت \( b_{-3} \) برابر 1 به دست می‌آید. بنابراین بخش کسری عدد برابر است با: \( (0.101)_{2} \)

روابط زیر این مراحل را نشان می‌‌دهد:

0.625×2 = 1.25
0.25×2 = 0.5
0.5×2 = 1.0
number-base-conversions-1

بنابراین داریم:

$$ (25.625)_{10} = (11001.101)_{2} $$

نکته: برای تبدیل بخش صحیح یک عدد از مبنای 10 به مبنای 2 کافی است به صورت متوالی بزرگ‌ترین توان‌های 2 ممکن را از عدد کم کنیم تا به باقی‌مانده "∘" برسیم. در معادل مبنای 2 عدد، در محل‌هایی که تفریق انجام شده است 1 و در بقیه محل‌ها "∘" داریم.
نکته: توان‌های متوالی 2 از "∘" تا 12 عبارتند از:

1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096

مثال: عدد \(N = (593)_{10}\) را به مبنای 2 تبدیل کنید.

بزرگ‌ترین توان 2 که امکان کم کردن آن از عدد 593 وجود دارد عدد 512 است، سپس می‌توان به ترتیب اعداد 64، 16 و 1 را از باقی‌مانده کم کرد (روابط زیر را ببینید).

593 - 512 = 81
81 - 64 = 17
17 - 16 = 1
1 - 1 = 0

بنابراین در معادل مبنای 2 این عدد در محل‌هایی به وزن 1، 16، 64 و 512 بیت 1 و در سایر محل‌ها بیت "∘" داریم. یعنی:

$$ (593)_{10} = (1001010001)_{2} $$

نکته: در صورتی که یک عدد بین دو توان متوالی عدد 2 یعنی \((2^k \le N \lt 2 ^{k+1})\) باشد، برای نمایش آن در مبنای 2 به 1+k بیت نیاز است.

مثال: برای نمایش عدد \(N = (345)_{10}\) در مبنای 2 به چند بیت نیاز داریم؟

از آن‌جا که \(2^8 = 256 \le 345 \lt 2^9 = 512\) برای نمایش این عدد در مبنای 2 به 9 بیت نیاز داریم.

مثال: عدد \(N = (451.5)_{10}\) را به مبنای 16 تبدیل کنید.

روابط زیر مراحل تبدیل را نشان می‌دهد:

0.5×16 = 8.0 number-base-conversions-2

بنابراین داریم:

$$ (451.5)_{10} = (1E3.8)_{16} $$

3- تبدیل از مبنای \( r_{1} \) به مبنای \( r_{2} \)

برای تبدیل یک عدد از مبنای \( r_{1} \) به مبنای \( r_{2} \) ، ابتدا عدد را از مبنای \( r_{1} \) به مبنای 10 تبدیل کرده و سپس عدد را از مبنای 10 به مبنای \( r_{2} \) تبدیل می‌کنیم.

مثال: عدد \(N = (23.3)_{5}\) را به مبنای 2 تبدیل کنید.

ابتدا عدد را به مبنای 10 تبدیل می‌کنیم:

$$ (23.3)_{5} = 2\times5^1 + 3\times5^0 + 3\times5^{-1} = (13.6)_{10} $$

حال عدد 13.6 را به مبنای 2 تبدیل می‌کنیم:

0.6×2 = 1.2
0.2×2 = 0.4
0.4×2 = 0.8
0.8×2 = 1.6
13 - 8 = 5
5 - 4 = 1
1 - 1 = 0

بنابراین داریم:

$$ (13.6)_{10} = (1101.\overline{1001})_{2} $$

نکته: در برخی موارد مقدار دقیقی برای بخش کسری یک عدد در مبنای جدید وجود ندارد. در این حالت اگر به دوره گردش برسیم (مانند مثال قبل) عدد را با دوره گردش نشان می‌دهیم، در غیر این صورت با یک دقت مشخص (مثلاً 4 بیت اعشاری) معادل تقریبی عدد را می‌نویسیم.

مثال: فرض کنید عدد N در مبنای \( r_{1} \) با \( n_{1} \) رقم نمایش داده شده است. اگر بخواهیم این عدد را به مبنای \( r_{2} \) تبدیل کنیم، تعداد رقم‌های مورد نیاز در مبنای جدید چقدر است؟

تعداد رقم‌های مورد نیاز در مبنای مقصد باید به گونه‌ای باشد که بتوان بزرگ‌ترین عدد قابل نمایش در مبنای \( r_{1} \) با \( n_{1} \) رقم را در مبنای مقصد نمایش داد. از این رو بزرگ‌ترین عدد قابل نمایش با \( n_{1} \) رقم در مبنای مبدأ باید از بزرگ‌ترین عدد قابل نمایش در مبنای مقصد کوچک‌تر باشد، بنابراین اگر فرض کنیم \( n_{2} \) تعداد رقم‌های مورد نیاز برای نمایش عدد N در مبنای \( r_{2} \) باشد، باید رابطه \( r_{1}^{n1} - 1 \le r_{2}^{n2} -1 \) برقرار باشد.

$$ r_{1}^{n1} - 1 \le r_{2}^{n2} -1 \Rightarrow n_{1} log r_{1} \le n_{2} log r_{2} \Rightarrow n_{2} \ge n_{1} \frac{logr_{1}}{logr_{2}} \Rightarrow n_{2}\lceil n_{1}\frac{logr_{1}}{logr_{2}}\rceil $$

نکته: فرض کنید عدد N در مبنای \( r_{1} \) با \( n_{1} \) رقم نمایش داده شده است. اگر بخواهیم این عدد را به مبنای \( r_{2} \) تبدیل کنیم، تعداد رقم‌های مورد نیاز در مبنای جدید از رابطه زیر به دست می‌آید:

$$ n_{2}\lceil n_{1}\frac{logr_{1}}{logr_{2}}\rceil $$

مثال: تعداد بیت‌های لازم برای نمایش یک عدد 3 رقمی ده‌دهی در مبنای 2 چیست؟

$$ n_{2}\lceil n_{1}\frac{logr_{1}}{logr_{2}}\rceil = \lceil 3\frac{log10}{log2}\rceil = \lceil 3\frac{1}{0.301}\rceil = 10 $$

نکته: در حالت خاص \( r_{1}=B, r_{2}=B^K \) ، بخش صحیح عدد N را از سمت چپ ممیز و بخش کسری آن را از سمت راست ممیز، به گروه‌های kتایی تقسیم می‌کنیم و معادل هر گروه k‌تایی را در مبنای \( r_{2} \) می‌نویسیم. ممکن است مجبور شویم سمت چپ آخرین گروه در بخش صحیح و سمت راست آخرین گروه در بخش کسری به تعداد کافی "∘" اضافه کنیم تا گروه kتایی تشکیل دهند.

مثال: عدد \(N = (01101001101001.010111)_{2}\) را به مبنای 16 تبدیل کنید.

از آن‌جا که در این مثال \( r_{1}=2 , r_{2}=2^4\) بنابراین 4 = k است.

$$ N = (\underbrace{0001}_{1} \underbrace{1010}_{A} \underbrace{0110}_{6} \underbrace{1001}_{9}.\underbrace{0101}_{5}\underbrace{1100}_{c})_{2} = (1A69.5C)_{16} $$

نکته: در حالت خاص \( r_{1}=B^K, r_{2}=B \) ، معادل kرقمی هر رقم را در مبنای \( r_{2} \) می‌نویسیم.

مثال: عدد \(N = (C41.5A)_{16}\) را به مبنای 2 تبدیل کنید.

از آن‌جا که در این مثال \( r_{2}=2 , r_{1}=2^4\) بنابراین 4 = k است.

$$ N = ( \underbrace{ C }_{1100} \underbrace{ 4 }_{0100} \underbrace{ 1 }_{0001} . \underbrace{ 5 }_{0101} \underbrace{ A }_{1010} )_{16} = (110001000001.0101101)_{2} $$

امتیازدهی5 1 1 1 1 1 1 1 1 1 15.00 امتیاز (4 رای)
بارگذاری نظرات