Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ เพื่อแปลงเลขฐานสองเป็นทศนิยมและในทางกลับกัน


ในระบบคอมพิวเตอร์ เลขฐานสองจะแสดงในระบบเลขฐานสองในขณะที่เลขฐานสิบอยู่ในระบบเลขฐานสิบ เลขฐานสองอยู่ในฐาน 2 ในขณะที่เลขฐานสิบอยู่ในฐาน 10

ตัวอย่างของเลขฐานสิบและเลขฐานสองที่เกี่ยวข้องกันมีดังนี้ -

เลขทศนิยม เลขฐานสอง
10 01010
7 00111
25 11001
16 10000

โปรแกรมที่แปลงเลขฐานสองเป็นฐานสิบและเลขฐานสองเป็นเลขฐานสองมีดังนี้

ตัวอย่าง

#include <iostream>
using namespace std;
void DecimalToBinary(int n) {
   int binaryNumber[100], num=n;
   int i = 0;
   while (n > 0) {
      binaryNumber[i] = n % 2;
      n = n / 2;
      i++;
   }
   cout<<"Binary form of "<<num<<" is ";
   for (int j = i - 1; j >= 0; j--)
      cout << binaryNumber[j];
   cout<<endl;
}
int BinaryToDecimal(int n) {
   int decimalNumber = 0;
   int base = 1;
   int temp = n;
   while (temp) {
      int lastDigit = temp % 10;
      temp = temp/10;
      decimalNumber += lastDigit*base;
      base = base*2;
   }
   cout<<"Decimal form of "<<n<<" is "<<decimalNumber<<endl;;
}
int main() {
   DecimalToBinary(23);
   BinaryToDecimal(10101);
   return 0;
}

ผลลัพธ์

Binary form of 23 is 10111
Decimal form of 10101 is 21

ในโปรแกรมที่ระบุข้างต้น มีสองฟังก์ชัน DecimalToBinary และ BinaryToDecimal สิ่งเหล่านี้แปลงตัวเลขจากทศนิยมเป็นไบนารีและไบนารีเป็นทศนิยมตามลำดับ

ในฟังก์ชัน DecimalToBinary ค่าไบนารีของเลขฐานสิบ n จะถูกเก็บไว้ในอาร์เรย์ binaryNumber[] มีการใช้ลูป while และผลลัพธ์ของการดำเนินการ n โมดูลัส 2 จะถูกเก็บไว้ใน binaryNumber[] สำหรับการวนซ้ำแต่ละครั้งของลูป ซึ่งแสดงโดยใช้ข้อมูลโค้ดต่อไปนี้

while (n > 0) {
   binaryNumber[i] = n % 2;
   n = n / 2;
   i++;
}

หลังจากนี้ เลขฐานสองจะแสดงโดยใช้ for loop ดังแสดงไว้ดังนี้

cout<<"Binary form of "<<num<<" is ";
for (int j = i - 1; j >= 0; j--)
cout << binaryNumber[j];

ในฟังก์ชัน BinaryToDecimal() วงในขณะที่ใช้เพื่อแปลงเลขฐานสองเป็นเลขฐานสิบ LastDigit มีบิตสุดท้ายของตัวแปร temp ฐานประกอบด้วยค่าฐานเช่น 2, 4, 6, 8 เป็นต้น DecimalNumber ประกอบด้วยผลรวมของค่า DecimalNumber ก่อนหน้าและผลิตภัณฑ์ของ LastDigit และฐาน

ทั้งหมดนี้แสดงให้เห็นโดยใช้ข้อมูลโค้ดต่อไปนี้ -

while (temp) {
   int lastDigit = temp % 10;
   temp = temp/10;
   decimalNumber += lastDigit*base;
   base = base*2;
}

ในฟังก์ชัน main() จะเรียกฟังก์ชัน DecimalToBinary() และ BinaryToDecimal() ดังแสดงไว้ดังนี้

DecimalToBinary(23);
BinaryToDecimal(10101);