دوستان عزیز سلام
طبق روالی که شروع کردیم اینبار میخواهیم به تحلیل و بررسی یک برنامه دیگر در متلب بپردازیم.
هدف تغییر مبنای اعداد بر مبنای 10 به مبنای دلخواه است. البته همونطور که میدونید ساختار اعدادی که به مبنای 16 تبدیل میشن متفاوته و خب امکان گرفتن خروجی بر مبنای 16 با کد دستوری که نوشتیم وجود نداره مگر اینکه بخواهیم از کدهای دستوری آماده متلب برای این کار استفاده کنیم که با بررسی یک شرط خروجی را بر مبنای 16 تحویل میده که در انتهای همین پست مورد بررسی قرار میگیره.
حالا به بررسی کد مربوط به تغییر مبنا میپردازیم.
همونطور که میدونید عمل تغییر مبنا با تقسیمهای پیاپی اتفاق میافته؛ تلاش میکنیم این روند رو در قالب کد متلب دربیاریم.
در ابتدا با دستورهای مربوط به اخذ ورودیها شروع میکنیم.
x=input('Input Your Number ='); n=input('Input Your Base =');
x عدد ورودی بر مبنای 10 و n مبنای مدنظر است که میخواهیم عدد به آن مبنا برود.
عدد ورودی میتواند عدد صحیح یا اعشاری باشد. اگر بخواهیم بخش صحیح و اعشاری را از هم جدا کنیم و ذخیره داشته باشیم از دستورات زیر استفاده میکنیم.
f=fix(x); w(1)=x-f;
دستور fix هد عددی را به جزء صحیح خودش تبدیل میکند. برای بدست آوردن بخش اعشار هم واضح است که با تفریق عدد اصلی و بخش صحیح بدست میآید.
تا اینجای کار عدد ورودی بر مبنای ده رو به دو بخش عدد صحیح و اعشار تبدیل کردیم.
اکنون وارد حلقه تکرار شده و عملیات تبدیل مبنا را شروع میکنیم.
while k >=1 t=f/n; r(i)=mod(f,n); k=fix(t); f=k;
متغیر t حاصل تقسیم عدد بر مبناست. متغیر r باقی مانده تقسیم عدد صحیح بر مبنا رو استخراج میکنه و در ادامه برای حاصل تقسیم همان روند قبل برای استخراج عدد صحیح با استفاده از دستور fix استفاده میشود و عدد جدید برای تقسیم بدست میآید.
حال باید با استفاده از تقسیمات قبل خروجی را که عدد در مبنای n است نشان دهیم.
for j=1:i-1 mj=mj+(10^(i-1-j))*r(i-j); end
i تعداد مراحل تقسیم را در خود ذخیره کرده است. با استفاده از حلقه و رابطه مشخص فوق، خروجی بر مبنای جدید بدست میآید که در انتها آن را نمایش میدهیم.
برای مبنای 16 هم با استفاده از کد زیر خواهیم داشت
dec2base(X,16)
ممنونم که همراهی میکنید.
اگر این مطلب برای شما یا اشخاصی که میشناسید مفید بود، ممنون میشم نظرات خودتون رو با ما به اشتراک بذارید. همچنین خوشحال میشم اگر این صفحه رو به کسانی که فکر میکنید علاقمند هستند یا بهش نیاز دارن معرفی کنید.
اگر سوالی دارید از طریق نظرها بپرسید تا جواب بدیم.
فایل این برنامه رو بزودی از زیر همین پست به رایگان میتونید دریافت کنید.
درباره این سایت