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