Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

แปลงอาร์เรย์ของเลขฐานสองเป็นจำนวนเต็มที่เกี่ยวข้องใน JavaScript


สมมติว่า เรามีอาร์เรย์ของตัวเลขที่มี 0 และ 1 −

const arr = [0, 1, 0, 1];

เราจำเป็นต้องเขียนฟังก์ชัน Array toBinary() ที่คืนค่าไบนารีที่สอดคล้องกันสำหรับอาร์เรย์ที่ใช้

ตัวอย่างเช่น − หากอาร์เรย์เป็น −

const arr = [1, 0, 1, 1];

ผลลัพธ์ควรเป็น 11 เนื่องจากการแสดงทศนิยมของไบนารี 1011 คือ 11

ดังนั้น เรามาเขียนโค้ดสำหรับฟังก์ชันนี้กัน

วิธีที่ 1:การใช้วิธีการของห้องสมุด

ใน JavaScript มีเมธอด parseInt() ซึ่งรับสองอาร์กิวเมนต์ อันแรกคือสตริง และตัวที่สองเป็นตัวเลขที่แทนฐานเฉพาะ เช่น 10 สำหรับฐานทศนิยม 2 สำหรับไบนารี ฟังก์ชันนี้จะแยกวิเคราะห์อาร์กิวเมนต์สตริงและคืนค่าจำนวนเต็ม ของฐานที่กำหนด ( ฐาน)

ในกรณีของเรา ในการแปลงอาร์เรย์ของไบนารีเป็นทศนิยม เราสามารถใช้ฟังก์ชัน parseInt() ได้ดังนี้ -

const arr = [1, 0, 1, 1];
const parseArray = arr => {
   const binaryString = arr.join("");
   return parseInt(binaryString, 2);
};
console.log(parseArray(arr));

วิธีที่ 2:การลดอาร์เรย์

ในวิธีนี้ เราวนซ้ำอาร์เรย์ไบนารีและสร้างทศนิยมตามเลขฐานสองที่สอดคล้องกัน เราจะใช้ตัวดำเนินการ shift ซ้าย (<<) เพื่อเลื่อนค่าสะสมไปทางซ้ายทีละหนึ่งบิตทุกครั้งและคืนค่าระดับบิต OR (|) ของค่าสะสมที่เลื่อนและค่าปัจจุบัน

รหัสสำหรับสิ่งนี้โดยใช้ตัวดำเนินการ Bitwise -

ตัวอย่าง

const arr = [1, 0, 1, 1];
const parseArray = arr => {
   return arr.reduce((acc, val) => {
      return (acc << 1) | val;
   });
};
console.log(parseArray(arr));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น -

11