شما همین تازه به عنوان استاد ریاضیات استخدام شدهاید. هفتهی اول خوب پیش رفت، اما در هفتهی دوم یک جای کار میلنگد. مشکل این است که هر پاسخی که دانشجویانتان میدهند غلط است! خوشبختانه مهارتهای ریاضیتان به شما کمک کرده تا مشکل را پیدا کنید: پاسخهای دانشجویان درست هستند، اما همهشان در مبنای ۲ (دودویی) نوشته شدهاند! شگفتآور است که معلوم شده هر هفته دانشجویان از مبنای دیگری استفاده میکنند. برای اینکه بتوانید سریع پاسخهای دانشجویان را بررسی کنید، ابزاری میسازید که بین مبناها تبدیل انجام میدهد.
دنبالهای از رقمها در یک مبنا را، که نمایندهی یک عدد است، به دنبالهای از رقمها در مبنای دیگر تبدیل کنید، بهگونهای که نمایندهی همان عدد باشد.
تبدیل را خودتان پیادهسازی کنید. برای انجام تبدیل، از راه دیگری استفاده نکنید.
در نمایش مکانی، یک عدد در مبنای b را میتوان بهصورت ترکیب خطی توانهای b فهمید.
عدد ۴۲، در مبنای ۱۰، یعنی:
(4 × 10¹) + (2 × 10⁰)
عدد ۱۰۱۰۱۰، در مبنای ۲، یعنی:
(1 × 2⁵) + (0 × 2⁴) + (1 × 2³) + (0 × 2²) + (1 × 2¹) + (0 × 2⁰)
عدد ۱۱۲۰، در مبنای ۳، یعنی:
(1 × 3³) + (1 × 3²) + (2 × 3¹) + (0 × 3⁰)
بله. آن سه عدد بالا دقیقاً یکساناند. تبریک!
این تمرین از شما نمیخواهد که سرریزها را مدیریت کنید. میتوانید فرض کنید که تبدیل digits از مبنای input_base به مبنای ۱۰ باعث سرریز u32 نمیشود.