Parity Bit (บิตความคู่คี่)
Parity bit หรือ check bit คือบิตที่เพิ่มเข้าไปในสตริงบิต เพื่อให้จำนวนบิต 1 ทั้งหมดในสตริงเป็นคู่ (even) หรือคี่ (odd)
ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับสองพารามิเตอร์: parity ที่ต้องการ (always 'even' หรือ 'odd') และการแทนทวินิยมของตัวเลขที่ต้องการตรวจสอบ ภารกิจของฟังก์ชันคือคืนค่าจำนวนเต็ม (0 หรือ 1) ซึ่งคือ parity bit ที่ต้องเพิ่มเข้าไป เพื่อให้ parity ของสตริงผลลัพธ์เป็นไปตามที่ต้องการ
ตัวอย่าง
โค้ดตัวอย่างด้านล่าง:
const parity = 'even';
const bin = '0101010';
const findParity = (parity, bin) => {
const arr = bin
.toString()
.split("");
let countOnes = 0;
let res = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i] == 1) {
countOnes += 1;
}
}
if (parity == 'even') {
if (countOnes % 2 == 0) {
res = 0;
} else {
res = 1;
}
} else {
if (countOnes % 2 !== 0) {
res = 0;
} else {
res = 1;
}
}
return res;
};
console.log(findParity(parity, bin));
ผลลัพธ์
1
คำอธิบายเพิ่มเติม
'0101010' มี 1 สามตัว (odd) ต้องการ even parity → เพิ่ม 1 ทำให้เป็น 4 ตัว (even) โค้ดนับ 1 แล้วตัดสิน parity bit สามารถลดรูปได้: `parity === 'even' ? countOnes % 2 : 1 - (countOnes % 2)`