บทช่วยสอนนี้จะกล่าวถึงการแสดงตัวเลขเป็นผลรวมของตัวเลขฐานสองเทียมขั้นต่ำ เลขฐานสองเทียมคือตัวเลขที่ประกอบด้วยเลขฐานสองเท่านั้น กล่าวคือ 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 เป็นต้น เราหวังว่าคุณจะพบว่าบทช่วยสอนนี้มีประโยชน์