บทช่วยสอนนี้จะกล่าวถึงการแสดงตัวเลขเป็นผลรวมของตัวเลขฐานสองเทียมขั้นต่ำ เลขฐานสองเทียมคือตัวเลขที่ประกอบด้วยเลขฐานสองเท่านั้น กล่าวคือ 0 และ 1 ตัวอย่างของเลขฐานสองเทียม ได้แก่ 00, 11, 10, 100, 111, 1011 เป็นต้น
ด้านล่างนี้คือตัวอย่างตัวเลขที่แสดงเป็นผลรวมของตัวเลขฐานสองเทียม
Input : 23 Output : 11 + 11 + 1 Explanation : 23 = 11 + 11 + 1, sum of pseudo-binary numbers(11, 11, 1) is 23. Input : 50 Output : 10 + 10 + 10 + 10 + 10
แนวทางในการหาแนวทางแก้ไข
ด้านล่างนี้เป็นหนึ่งในวิธีที่ดีที่สุดในการหาเลขฐานสองเทียมขั้นต่ำเพื่อแทน N
-
นำตัวเลข X และอัปเดตหลักเป็น 1 หรือ 0 ตามหลักตัวเลข N
-
ตรวจเลข N ทุกตำแหน่ง
-
หากเป็น 0 ให้อัปเดตตำแหน่งของ X เป็น 0
-
หากไม่ใช่ศูนย์ ให้อัปเดตตำแหน่งของ X เป็น 1
-
สมมุติว่า N =32 แล้ว X จะเป็น 11
-
-
จากนั้น X จะเป็นเลขฐานสองเทียมหนึ่งตัว
-
ตอนนี้ลด N ด้วย X และทำซ้ำขั้นตอนที่ 1 จนกระทั่ง N กลายเป็นศูนย์
ตัวอย่าง
รหัส C++ สำหรับแนวทางข้างต้น
#include<iostream> using namespace std; int main(){ int N = 51; // find a pseudo-binary number until N becomes 0. cout << "pseudo-binary representation of " << N << " is: "; while (N > 0){ // finding X which contains 0's and 1's according to N. int temp = N; int X = 0, bit = 1; // checking each place of N for zero or non-zero. while (temp!=0){ int last_dig = temp % 10; temp = temp / 10; if (last_dig != 0) X += bit; bit *= 10; } // printing one pseudo-binary number. cout << X << " "; // Updating N by subtracting with X. N = N - X; } return 0; }
ผลลัพธ์
pseudo-binary representation of 51 is: 11 10 10 10 10
ทำความเข้าใจรหัส
-
วงแหวนรอบนอกสำหรับการรับ N และการเลือกหลักในทุกตำแหน่งเพื่อค้นหา X
-
เรากำลังอัปเดตค่าของตัวแปร temp ด้วย N และ Inner loop เพื่อตรวจสอบแต่ละตำแหน่งของตัวแปร temp และอัปเดตตำแหน่งของตัวแปร X
-
การพิมพ์ค่า X เนื่องจากเป็นเลขฐานสองเทียมหนึ่งตัว
-
เราอัปเดต N โดยลบด้วย X แล้วไปที่ลูปด้านนอกอีกครั้งจนกระทั่ง N กลายเป็น 0
บทสรุป
ในบทช่วยสอนนี้ เราได้พูดถึงวิธีที่เราสามารถแสดงตัวเลขเป็นผลรวมของตัวเลขไบนารีเทียมขั้นต่ำที่เป็นไปได้ เราได้พูดคุยถึงแนวทางในการหาเลขฐานสองเทียมทั้งหมด เรายังพูดถึงโค้ด C++ สำหรับโค้ดเดียวกัน ซึ่งเราสามารถเขียนในภาษาการเขียนโปรแกรมอื่นๆ เช่น C, Java, Python เป็นต้น เราหวังว่าคุณจะพบว่าบทช่วยสอนนี้มีประโยชน์