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