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

Kar Paelng Binari Pen Thsniym Ni C



ในบทความนี้ เราจะเห็นการแปลงค่าไบนารีเป็นค่าทศนิยมในโปรแกรม C++ เลขฐานสองจะแสดงด้วยตัวเลข 0 และ 1 ในขณะที่ค่าทศนิยมประกอบด้วยตัวเลขตั้งแต่ 0 ถึง 9 เพื่อให้การแปลงเลขฐานสองเป็นทศนิยมสำเร็จ ค่าไบนารีควรคูณด้วย 2 ยกกำลังของ “ n” โดยเริ่มจากด้านขวาแล้วเลื่อนไปทางซ้ายด้วยเครื่องหมาย “n” ที่สูงกว่า ลองใช้สิ่งนี้ในโค้ดเพื่อแปลงไบนารีเป็นค่าทศนิยม

ตัวอย่างที่ 1: โปรแกรมไบนารีเป็นทศนิยมโดยใช้ลูป 'While'

เรามีโปรแกรมแปลงตัวเลขจากไบนารี่เป็นทศนิยมดังต่อไปนี้ ภายในโปรแกรม เราใช้ลูป ' While' เพื่อแปลงไบนารี่เป็นทศนิยม

#รวม
#รวม

โดยใช้ เนมสเปซ มาตรฐาน ;

ภายใน การแปลงของBin ( ยาว ยาว ) ;

ภายใน หลัก ( ) {
ยาว ยาว หนึ่ง ;
ศาล << 'ต้องใช้เลขฐานสอง: ' ;
การกิน >> หนึ่ง ;
ศาล << หนึ่ง << ' ในไบนารี = ' << การแปลงของBin ( หนึ่ง ) << 'เป็นทศนิยม' ;
กลับ 0 ;
}

ภายใน การแปลงของBin ( ยาว ยาว หนึ่ง ) {
ภายใน ดังนั้น = 0 , x = 0 , ส่วนที่เหลือ ;

ในขณะที่ ( หนึ่ง ! = 0 ) {
ส่วนที่เหลือ = หนึ่ง % 10 ;
หนึ่ง / = 10 ;
ธ.ค + = ส่วนที่เหลือ * ธาร ( 2 , x ) ;
++ x ;
}

กลับ ดังนั้น ;
}

ที่นี่เรากำหนดไฟล์ส่วนหัว 'iostream' สำหรับสตรีมอินพุตและเอาต์พุตและ 'cmath' เพื่อใช้ฟังก์ชันทางคณิตศาสตร์ในโปรแกรม หลังจากนั้น เรากำหนดฟังก์ชัน ConversionOfBin() โดยที่พารามิเตอร์ประเภท “long long” ถูกส่งผ่าน ต่อไปเราจะเรียกฟังก์ชัน main() เพื่อรันโปรแกรม เราประกาศตัวแปรชนิดอินเตอร์แบบยาวที่เรียกว่า “num” ภายในฟังก์ชัน main()







หลังจากนี้ ฟังก์ชัน ConversionOfBin() จะแปลงเลขฐานสองที่ป้อนเข้าเป็นเลขฐานสิบ สำหรับสิ่งนี้ เรามีคำจำกัดความของฟังก์ชัน ConversionOfBin() ที่อยู่หลังโค้ดไดรเวอร์ ฟังก์ชัน ConversionOfBin() ถูกส่งผ่านด้วยตัวแปร “num” ซึ่งมีเลขฐานสอง จากนั้นเราเรียกลูป ' While' เพื่อแปลงเลขฐานสองใน 'num' ให้เป็นค่าทศนิยม ก่อนหน้านี้ เราเริ่มต้นตัวแปร 'deci', 'x' และ 'ส่วนที่เหลือ' ด้วยค่า '0'



ภายในลูป 'ในขณะที่' การดำเนินการหารจะดำเนินการเพื่อแสดงค่าที่อยู่ทางขวาสุดของเลขฐานสอง ผลการหารจะถูกจัดเก็บไว้ในตัวแปร “ส่วนที่เหลือ” จากนั้นเราบวกผลลัพธ์ของส่วนที่เหลือและผลลัพธ์กำลังลงในตัวแปร “เดซิ” ตัวแปร “x” จะประเมินกำลังงานแอ็กทีฟของ 2 ต่อไป



ผลลัพธ์ของการแปลงเลขฐานสองที่ระบุเป็นค่าทศนิยมสามารถทำได้ในคอนโซล C++:





ตัวอย่างที่ 2: โปรแกรมไบนารีเป็นทศนิยมโดยใช้ลูป 'For'

การแปลงจากไบนารี่เป็นทศนิยมทำได้สำเร็จโดยใช้ลูป ' while' อย่างไรก็ตาม เรายังสามารถใช้วิธีวนรอบ 'for' เพื่อแปลงบิตไบนารี่ให้เป็นเลขทศนิยมได้



#รวม
#รวม

ภายใน หลัก ( ) {
มาตรฐาน :: เชือก ถังขยะ ;
มาตรฐาน :: ศาล << 'ป้อนหมายเลขไบนารี่: ' ;
มาตรฐาน :: การกิน >> ถังขยะ ;

ภายใน ธ.ค = 0 ;
ภายใน ฐานคือ = 1 ;

สำหรับ ( ภายใน = ถังขยะ ความยาว ( ) - - 1 ; >= 0 ; -- ) {
ถ้า ( ถังขยะ [ ] == '1' ) {
ธ.ค + = ฐานคือ ;
}
ฐานคือ * = 2 ;
}

มาตรฐาน :: ศาล << 'ผลลัพธ์เป็นทศนิยม: ' << ธ.ค << มาตรฐาน :: สิ้นสุด ;

กลับ 0 ;
}

ที่นี่เราเริ่มต้นด้วยโปรแกรมฟังก์ชัน main() ซึ่งเรามีตัวแปร 'std::string' ซึ่งก็คือ 'bin' เพื่อจัดเก็บเลขฐานสองที่ผู้ใช้ป้อนในพรอมต์ ในตอนแรก ข้อความแจ้งจะขอให้ผู้ใช้ป้อนเลขฐานสองโดยใช้คำสั่ง 'cout' จากนั้นคำสั่ง 'cin' จะอ่านเลขฐานสองนั้น หลังจากนั้นเราเริ่มต้นตัวแปร 'dec' ด้วยค่า '0' และตัวแปร 'baseIs' ด้วยค่า '1' เพื่อให้ได้ค่าทศนิยมที่เท่ากัน

จากนั้นเราเรียกลูป 'for' ซึ่งวนซ้ำแต่ละหมายเลขของไบนารีที่ระบุจากขวาไปซ้าย ภายในลูป เรามีเงื่อนไข 'if' เพื่อตรวจสอบว่าเลขฐานสองเป็น 1 หรือไม่ หากเป็น 1 ค่าทศนิยมจะถูกเพิ่มให้กับตัวแปร 'dec' ตัวแปร “baseIs” มีพลังเป็น 2 ที่จะคูณด้วย 1 ในการวนซ้ำแต่ละครั้ง

ค่าของเลขฐานสองและการแปลงเป็นค่าทศนิยมจะแสดงบนหน้าจอแจ้ง:

ตัวอย่างที่ 3: โปรแกรมไบนารี่สตริงเป็นทศนิยม

ขณะนี้ค่าสตริงไบนารี่ถูกกำหนดให้แปลงค่าเป็นค่าทศนิยม การใช้งานต่อไปนี้เสร็จสิ้นเพื่อแปลงค่าสตริงไบนารีเป็นค่าทศนิยม:

#รวม
#รวม
โดยใช้ เนมสเปซ มาตรฐาน ;

ภายใน binToDec ( สตริงวาล )
{
ค่าสตริง = วาล ;
ภายใน ทศนิยม_ค่า = 0 ;

ภายใน base_value = 1 ;

ภายใน เท่านั้น = ค่า. ความยาว ( ) ;
สำหรับ ( ภายใน = เท่านั้น - - 1 ; >= 0 ; -- ) {
ถ้า ( วาล [ ] == '1' )
ทศนิยม_ค่า + = base_value ;
base_value = base_value * 2 ;
}

กลับ ทศนิยม_ค่า ;
}

ภายใน หลัก ( )
{
สตริงวาล = '11100101' ;
ศาล << binToDec ( วาล ) << สิ้นสุด ;
}

ที่นี่ เราเริ่มต้นด้วยการสร้างฟังก์ชัน BinToDec() สำหรับการแปลงเลขฐานสองให้เป็นค่าทศนิยม ฟังก์ชัน BinToDec() รับอาร์กิวเมนต์ 'val' ของประเภทสตริง ภายในฟังก์ชัน BinToDec() เราจะเริ่มต้นตัวแปร “value” ด้วยตัวแปร “val” ซึ่งแสดงว่าค่าของตัวแปร “val” จะถูกจัดเก็บไว้ในตัวแปร “value” จากนั้นเราประกาศตัวแปรใหม่ “decimal_value” ซึ่งกำหนดให้มีค่าเป็น 0

ในทำนองเดียวกัน ตัวแปร “base_value” จะถูกตั้งค่าและเริ่มต้นด้วยค่า 1 ต่อไป เราจะกำหนดตัวแปร “len” โดยที่ฟังก์ชัน length() ถูกเรียกใช้เพื่อรับความยาวของเลขฐานสอง หลังจากการกำหนดค่าเริ่มต้นของตัวแปรแล้ว เราก็มี 'for' การวนซ้ำ ลูป 'for' วนซ้ำเลขฐานสองทุกหลักจากขวาไปซ้าย

หลังจากนั้น เรามีฟังก์ชัน main() โดยระบุเลขฐานสองเป็นค่าสตริงให้กับตัวแปร “val” ซึ่งจะถูกแปลงเป็นค่าทศนิยมเมื่อเราเรียกใช้ฟังก์ชัน BinToDec(val) ด้วยคำสั่ง “cout”

ขณะนี้ค่าไบนารีชนิดสตริงถูกแปลงเป็นค่าทศนิยมตามที่แสดงต่อไปนี้:

ตัวอย่างที่ 4: โปรแกรมไบนารีเป็นทศนิยมโดยใช้คลาส Bitset

นอกจากนี้ เราสามารถแปลงเลขฐานสองให้เป็นเลขฐานสิบได้โดยการกำหนดคลาส “บิตเซ็ต” ของ C++ ในโปรแกรม มันมีฟังก์ชั่นที่ขั้นตอนการแปลงนั้นง่ายมาก

#รวม
#รวม <บิตเซ็ต>

ภายใน หลัก ( ) {
มาตรฐาน :: เชือก ไบนารี่ ;
มาตรฐาน :: ศาล << 'กรุณาระบุเลขฐานสอง: ' ;
มาตรฐาน :: การกิน >> ไบนารี่ ;

มาตรฐาน :: บิตเซ็ต < 64 > ไบนารี่ ( ไบนารี่ ) ;
ไม่ได้ลงนาม ยาว เลขทศนิยม = ไบนารี่. นานเกินไป ( ) ;

มาตรฐาน :: ศาล << 'เลขทศนิยม:' << เลขทศนิยม << มาตรฐาน :: สิ้นสุด ;

กลับ 0 ;
}

ที่นี่ เราตั้งค่าไลบรารี 'bitset' ของ C++ ในส่วนหัว ซึ่งมีประโยชน์มากเมื่อทำงานกับค่าไบนารี หลังจากนี้ เรามีคำจำกัดความฟังก์ชัน main() โดยที่เราใช้ 'std::string' เพื่อประกาศตัวแปร 'binaryIs' ตัวแปร “binaryIs” เก็บค่าของไบนารี่ไว้ในสตริง ต่อไป เราขอให้ผู้ใช้เพิ่มเลขฐานสองในข้อความแจ้งโดยผู้ใช้ และมันจะอ่านผ่านคำสั่ง 'cin' หลังจากนั้นเราจะปรับขนาดของบิตซึ่งสามารถเป็นจำนวนเต็ม 64 บิตได้ จากนั้นฟังก์ชัน to_ulong() จะถูกเรียกจากคลาส “bitset” ไปเป็นตัวแปร “decimalNumber” ฟังก์ชัน to_ulong() จะแปลงชุดของบิตให้เป็นชนิดข้อมูลขนาดยาวที่ไม่ได้ลงนาม สุดท้ายเราใช้คำสั่ง 'cout' เพื่อพิมพ์ค่าทศนิยมของค่าไบนารี่ที่ผู้ใช้กำหนด

ขณะนี้ค่าไบนารีที่ผู้ใช้ให้ไว้จะถูกแปลงเป็นค่าทศนิยม:

บทสรุป

โดยสรุป เราได้กล่าวถึงวิธีการแปลงค่าไบนารี่ให้เป็นค่าทศนิยม เราใช้ลูป 'สำหรับ' ลูป 'ในขณะที่' และคลาสบิตเซ็ตเข้าใกล้สำหรับการแปลงไบนารี่เป็นทศนิยม วิธีการเหล่านี้แปลงเลขฐานสองให้เป็นระบบทศนิยมซึ่งช่วยให้อ่านและทำความเข้าใจได้ง่ายขึ้น