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

โปรแกรมสำหรับการแปลงไบนารีเป็นทศนิยมใน C++


กำหนดให้มีเลขฐานสองเป็นอินพุต ภารกิจคือการแปลงเลขฐานสองที่กำหนดให้เป็นเลขฐานสิบ

ตัวเลขทศนิยมในคอมพิวเตอร์จะแสดงด้วยฐาน 10 และเลขฐานสองจะแสดงด้วยฐาน 2 เนื่องจากมีเพียงเลขฐานสอง 0 และ 1 เท่านั้น ในขณะที่ตัวเลขทศนิยมสามารถเป็นตัวเลขใดก็ได้ตั้งแต่ 0 – 9

ในการแปลงเลขฐานสองเป็นเลขฐานสิบ เราจะแยกตัวเลขเริ่มต้นจากขวาไปซ้ายจนถึงเศษที่เหลือ จากนั้นคูณด้วยเลขยกกำลัง 2 เริ่มจาก 0 และจะเพิ่มขึ้น 1 จนถึง (จำนวนหลัก) – 1 และด้วย ที่คอยบวกค่าคูณเพื่อให้ได้ค่าทศนิยมสุดท้าย

ด้านล่างนี้คือการแสดงรูปภาพของการแปลงเลขฐานสองเป็นเลขฐานสิบ

โปรแกรมสำหรับการแปลงไบนารีเป็นทศนิยมใน C++

ตัวอย่าง

Input-: 1010
   0 will be converted to a decimal number by -: 0 X 2^0 = 0
   1 have corresponding binary equivalent of 3 digit -: 1 X 2^1 = 2
   0 have corresponding binary equivalent of 3 digit -: 0 X 2^2 = 0
   1 have corresponding binary equivalent of 3 digit -: 1 X 2^3 = 8
Output-: total = 0 + 2 + 0 + 8 = 10

อัลกอริทึม

Start
Step1-> Declare function to convert binary to decimal
   int convert(string str)
   set string n = str
   set int val = 0
   set int temp = 1
   set int len = n.length()
   Loop For int i = len - 1 i >= 0 i—
      IF n[i] == '1'
         Set val += temp
      End
      Set temp = temp * 2
   End
   return val
Step 2-> In main()
   Set string val = "11101"
   Call convert(val)
Stop

ตัวอย่าง

#include <iostream>
#include <string>
using namespace std;
//convert binary to decimal
int convert(string str) {
   string n = str;
   int val = 0;
   int temp = 1;
   int len = n.length();
   for (int i = len - 1; i >= 0; i--) {
      if (n[i] == '1')
      val += temp;
      temp = temp * 2;
   }
   return val;
}
int main() {
   string val = "11101";
   cout<<val<<" after converion into deciaml : "<<convert(val);
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น จะเกิดผลลัพธ์ดังต่อไปนี้

11101 after converion into deciaml : 29