برنامه تبدیل عدد از مبنای ۱۰ به ۲ — به زبان ساده

در این مطلب، روش نوشتن برنامه تبدیل عدد از مبنای ۱۰ به ۲ تشریح میشود. در واقع، هدف نوشتن برنامهای است که یک عدد (در مبنای ۱۰) را از ورودی دریافت کرده و سپس، آن را به مبنای ۲ ببرد. برای انجام این کار، روشهای گوناگونی وجود دارد. در ادامه، روشهای تبدیل عدد از مبنای ۱۰ به مبنای ۲ (دستگاه اعداد دودویی) مورد بررسی قرار خواهند گرفت. همچنین، کد پیادهسازی این روشها در زبانهای برنامهنویسی گوناگون شامل ++C ،C، «جاوا» (Java)، «پایتون» (Python) و «سیشارپ» (#C) ارائه شده است.
برنامه تبدیل عدد از مبنای ۱۰ به ۲ با روش تکرار شونده
برای هر عددی، میتوان بررسی کرد که iاُمین بیت آن صفر (خاموش) یا یک (روشن) است. این کار، با AND بیتی $$2^i$$ (دو به توان i) انجام میشود.
- عدد «NUM» از ورودی دریافت میشود. هدف بررسی این است که بیت صفرم آن، روشن (۱) یا خاموش (۰) است.
- bit = 2 ^ 0 (هدف بررسی بیت صفرم است، بنابراین i = 0)
- اگر NUM & bit == 1 باشد، بدین معنا است که 0اُمین بیت روشن و در غیر این صورت، 0اُمین بیت خاموش است.
- به طور مشابه، اگر هدف بررسی این است که آیا ۵اُمین بیت روشن یا خاموش است، اعمال زیر باید انجام شود.
- bit = 2 ^ 5 (هدف بررسی بیت پنجم است، بنابراین i=5)
- اگر NUM & bit == 1 باشد، بدین معنا است که 5اُمین بیت روشن (۱) و در غیر این صورت، به معنای خاموش بودن (۰) بیت مذکور است.
«عدد صحیح بدون علامت» (Unsigned Integer) سی و دو بیتی (۳۲ بیتی) که حاوی ۳۱-۰ بیت است، از ورودی دریافت میشود. برای چاپ کردن ارائه دودویی عدد صحیح بدون علامت، کار از از ۳۱اُمین بیت آغاز و بررسی میشود که بیت مذکور خاموش یا روشن است. اگر این بیت روشن باشد، «۱» و در غیر این صورت، صفر (۰) چاپ میشود. اکنون، بررسی میشود که بیت ۳۰اُم روشن یا خاموش است. اگر این بیت روشن باشد مقدار ۱ و در غیر این صورت، ۰ در خروجی چاپ میشود. این کار برای همه بیتها از ۳۱ تا ۰ باید انجام شود. در نهایت، ارائه دودویی عدد در خروجی دریافت خواهد شد.
void bin(unsigned n) { unsigned i; for (i = 1 << 31; i > 0; i = i / 2) (n & i)? printf("1"): printf("0"); } int main(void) { bin(7); printf("\n"); bin(4); }
برنامه تبدیل عدد از مبنای ۱۰ به ۲ با روش بازگشتی
در ادامه، الگوریتم بازگشتی (Recursive Method) تبدیل عدد NUM از مبنای ۱۰ به مبنای ۲ (دستگاه دودویی) ارائه شده است.
- اگر NUM > 1
- NUM را در پشته قرار بده
- به صورت بازگشتی، تابع با NUM / 2 را فراخوانی کن.
- و
- NUM را از پشته حذف (POP) کن، آن را بر دو تقسیم و باقیمانده تقسیم را چاپ کن.
برنامه بازگشتی تبدیل عدد از مبنای ۱۰ به مبنای ۲ در ++C
// C++ Program for the binary // representation of a given number #include<bits/stdc++.h> using namespace std; void bin(unsigned n) { /* step 1 */ if (n > 1) bin(n/2); /* step 2 */ cout << n % 2; } int main(void) { bin(7); cout << endl; bin(4); } // This code is contributed // by Akanksha Rai
برنامه بازگشتی تبدیل عدد از مبنای ۱۰ به مبنای ۲ در C
// C Program for the binary // representation of a given number void bin(unsigned n) { /* step 1 */ if (n > 1) bin(n/2); /* step 2 */ printf("%d", n % 2); } int main(void) { bin(7); printf("\n"); bin(4); }
برنامه بازگشتی تبدیل عدد از مبنای ۱۰ به مبنای ۲ در جاوا
// Java Program for the binary // representation of a given number class GFG { static void bin(int n) { /* step 1 */ if (n > 1) bin(n/2); /* step 2 */ System.out.print(n % 2); } //Driver code public static void main(String[] args) { bin(7); System.out.println(); bin(4); } } // This code is contributed // by ChitraNayal
برنامه بازگشتی تبدیل عدد از مبنای ۱۰ به مبنای ۲ در پایتون ۳
# Python3 Program for the binary # representation of a given number def bin(n) : if n > 1 : bin(n // 2) print(n % 2,end = "") if __name__ == "__main__" : bin(7) print() bin(4) # This code is contributed by ANKITRAI1
برنامه بازگشتی تبدیل عدد از مبنای ۱۰ به مبنای ۲ در #C
// C# Program for the binary // representation of a given number using System; class GFG { static void bin(int n) { // step 1 if (n > 1) bin(n / 2); // step 2 Console.Write(n % 2); } // Driver code static public void Main () { bin(7); Console.WriteLine(); bin(4); } } // This code is contributed ajit
برنامه بازگشتی تبدیل عدد از مبنای ۱۰ به مبنای ۲ در PHP
<?php // PHP Program for the binary // representation of a given number function bin($n) { /* step 1 */ if ($n > 1) bin($n/2); /* step 2 */ echo ($n % 2); } // Driver code bin(7); echo ("\n"); bin(4); // This code is contributed // by Shivi_Aggarwal ?>
خروجی
در زیر، خروجی قطعه کدهای بالا برای اعداد ۷ (۱۱۱) و ۴ (۱۰۰) ارائه شده است.
111 100
تبدیل عدد از مبنای ۱۰ به ۲ با روش بازگشتی و عملگر بیتی
مراحل لازم برای تبدیل یک عدد اعشاری به عدد دودویی، در ادامه بیان شده است.
- n > 0 را بررسی کن.
- عدد را یک بیت به سمت راست شیفت بده و تابع بازگشتی را فراخوانی کن.
- بیتهای عدد را چاپ کن.
برنامه تبدیل عدد از مبنای ۱۰ به مبنای ۲ در ++C
// C++ implementation of the approach #include<bits/stdc++.h> using namespace std; // Function to convert decimal // to binary number void bin(unsigned n) { if (n > 1) bin(n>>1); printf("%d", n & 1); } // Driver code int main(void) { bin(131); printf("\n"); bin(3); return 0; }
برنامه تبدیل عدد از مبنای ۱۰ به مبنای ۲ در جاوا
// Java implementation of the approach class GFG { // Function to convert decimal // to binary number static void bin(Integer n) { if (n > 1) bin(n>>1); System.out.printf("%d", n & 1); } // Driver code public static void main(String[] args) { bin(131); System.out.printf("\n"); bin(3); } } /*This code is contributed by PrinciRaj1992*/
برنامه تبدیل عدد از مبنای ۱۰ به مبنای ۲ در پایتون ۳
# Python 3 implementation of above approach # Function to convert decimal to # binary number def bin(n): if (n > 1): bin(n >> 1) print(n & 1, end = "") # Driver code bin(131) print() bin(3) # This code is contributed by PrinciRaj1992
برنامه تبدیل عدد از مبنای ۱۰ به مبنای ۲ در #C
// C# implementation of above approach using System; public class GFG { // Function to convert decimal // to binary number static void bin(int n) { if (n > 1) bin(n>>1); Console.Write(n & 1); } // Driver code public static void Main() { bin(131); Console.WriteLine(); bin(3); } } /*This code is contributed by PrinciRaj1992*/
برنامه تبدیل عدد از مبنای ۱۰ به مبنای ۲ در PHP
<?php // PHP implementation of the approach // Function to convert decimal // to binary number function bin($n) { if ($n > 1) bin($n>>1); echo ($n & 1); } // Driver code bin(131); echo "\n"; bin(3); // This code is contributed // by Akanksha Rai
خروجی
خروجی قطعه کدهای بالا، برای اعداد ۱۳۱ (10000011) و ۳ (11)، در ادامه ارائه شده است.
10000011 11
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی
- آموزش برنامهنویسی C++
- مجموعه آموزشهای ریاضیات
- یافتن دور همیلتونی با الگوریتم پس گرد — به زبان ساده
- الگوریتم بازی مار و پله همراه با کد — به زبان ساده
- حل مساله n وزیر با الگوریتم پسگرد (Backtracking) — به زبان ساده
^^