JS กวดวิชา

เจเอสโฮม JS Introduction JS Where To JS เอาท์พุต งบ JS JS ไวยากรณ์ JS ความคิดเห็น ตัวแปร JS เจเอส เลท JS Const JS Operators JS เลขคณิต JS Assignment ประเภทข้อมูล JS ฟังก์ชัน JS วัตถุ JS JS Events JS Strings JS String Methods JS String Search เทมเพลตสตริง JS JS Numbers JS Number Methods JS Arrays JS Array Methods JS Array Sort JS Array Iteration JS Array Const JS Dates รูปแบบวันที่ JS JS วันที่รับเมธอด JS Date Set Methods JS Math JS สุ่ม JS Booleans JS เปรียบเทียบ JS Conditions JS Switch JS ลูปสำหรับ JS Loop สำหรับ In JS วนสำหรับ Of JS วนรอบในขณะที่ JS Break JS Iterables JS ชุด JS Maps JS Typeof JS ประเภทการแปลง JS Bitwise JS RegExp JS Errors JS ขอบเขต JS Hoisting JS โหมดเข้มงวด JS คำสำคัญนี้ JS Arrow Function JS Classes JS JSON JS Debugging คู่มือสไตล์ JS JS แนวทางปฏิบัติที่ดีที่สุด JS ความผิดพลาด JS Performance JS สงวนคำ

เวอร์ชัน JS

เวอร์ชัน JS JS 2009 (ES5) เจเอส 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / ขอบ JS History

วัตถุ JS

คำจำกัดความของวัตถุ คุณสมบัติของวัตถุ วิธีการวัตถุ การแสดงวัตถุ อุปกรณ์เสริมวัตถุ ตัวสร้างวัตถุ ต้นแบบวัตถุ วัตถุ Iterables ชุดวัตถุ แผนที่วัตถุ การอ้างอิงวัตถุ

ฟังก์ชัน JS

คำจำกัดความของฟังก์ชัน พารามิเตอร์ฟังก์ชัน เรียกใช้ฟังก์ชัน เรียกฟังก์ชัน ฟังก์ชัน สมัคร การปิดฟังก์ชัน

JS Classes

แนะนำคลาส การสืบทอดคลาส คลาสคงที่

JS Async

JS Callbacks JS แบบอะซิงโครนัส JS Promises JS Async/รอ

JS HTML DOM

บทนำ DOM วิธี DOM เอกสาร DOM องค์ประกอบ DOM DOM HTML แบบฟอร์ม DOM DOM CSS ภาพเคลื่อนไหว DOM กิจกรรม DOM DOM Event Listener การนำทาง DOM โหนด DOM DOM Collections รายการโหนด DOM

JS เบราว์เซอร์ BOM

JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies

JS Web APIs

แนะนำ Web API เว็บฟอร์ม API API ประวัติเว็บ API ที่เก็บข้อมูลเว็บ Web Worker API API ดึงเว็บ เว็บ Geolocation API

JS AJAX

บทนำ AJAX AJAX XMLHttp คำขอ AJAX การตอบสนอง AJAX ไฟล์ AJAX XML AJAX PHP AJAX ASP ฐานข้อมูล AJAX แอปพลิเคชัน AJAX ตัวอย่าง AJAX

JS JSON

บทนำ JSON ไวยากรณ์ JSON JSON กับ XML ประเภทข้อมูล JSON JSON Parse JSON สตริงริฟาย วัตถุ JSON อาร์เรย์ JSON เซิร์ฟเวอร์ JSON JSON PHP JSON HTML JSON JSONP

JS กับ jQuery

ตัวเลือก jQuery jQuery HTML jQuery CSS jQuery DOM

JS กราฟิก

JS กราฟิก JS Canvas JS Plotly JS Chart.js JS Google Chart JS D3.js

ตัวอย่าง JS

ตัวอย่าง JS JS HTML DOM JS HTML อินพุต JS HTML Objects JS HTML Events JS Browser JS Editor JS แบบฝึกหัด JS Quiz ใบรับรอง JS

JS References

วัตถุ JavaScript วัตถุ HTML DOM


JavaScript Bitwise Operations


JavaScript ตัวดำเนินการ Bitwise

Operator Name Description
& AND Sets each bit to 1 if both bits are 1
| OR Sets each bit to 1 if one of two bits is 1
^ XOR Sets each bit to 1 if only one of two bits is 1
~ NOT Inverts all the bits
<< Zero fill left shift Shifts left by pushing zeros in from the right and let the leftmost bits fall off
>> Signed right shift Shifts right by pushing copies of the leftmost bit in from the left, and let the rightmost bits fall off
>>> Zero fill right shift Shifts right by pushing zeros in from the left, and let the rightmost bits fall off

ตัวอย่าง

Operation Result Same as Result
5 & 1 1 0101 & 0001  0001
5 | 1 5 0101 | 0001  0101
~ 5 10  ~0101  1010
5 << 1 10 0101 << 1  1010
5 ^ 1 4 0101 ^ 0001  0100
5 >> 1 2 0101 >> 1  0010
5 >>> 1 2 0101 >>> 1  0010

JavaScript ใช้ 32 บิตตัวถูกดำเนินการ Bitwise

JavaScript เก็บตัวเลขเป็นตัวเลขทศนิยม 64 บิต แต่การดำเนินการระดับบิตทั้งหมดจะดำเนินการบนเลขฐานสอง 32 บิต

ก่อนดำเนินการระดับบิต JavaScript จะแปลงตัวเลขเป็นจำนวนเต็มที่ลงนาม 32 บิต

หลังจากดำเนินการระดับบิตแล้ว ผลลัพธ์จะถูกแปลงกลับเป็นตัวเลข JavaScript 64 บิต

ตัวอย่างข้างต้นใช้เลขฐานสองที่ไม่มีเครื่องหมาย 4 บิต ด้วยเหตุนี้ ~ 5 ผลตอบแทน 10

เนื่องจาก JavaScript ใช้จำนวนเต็มที่ลงนาม 32 บิต จะไม่ส่งคืน 10 แต่จะคืนค่า -6

000000000000000000000000000000101 (5)

11111111111111111111111111111010 (~5 = -6)

จำนวนเต็มที่ลงนามใช้บิตซ้ายสุดเป็นเครื่องหมายลบ



Bitwise และ

เมื่อดำเนินการระดับบิต AND กับคู่ของบิต จะส่งกลับ 1 หากทั้งสองบิตเป็น 1

ตัวอย่างหนึ่งบิต:
การดำเนินการผลลัพธ์
0 & 00
0 & 10
1 & 00
1 & 11
ตัวอย่าง 4 บิต:
การดำเนินการผลลัพธ์
1111 & 00000000
1111 & 00010001
1111 & 00100010
1111 & 01000100

Bitwise OR

เมื่อดำเนินการ OR ระดับบิตบนคู่ของบิต จะส่งกลับ 1 หากหนึ่งในบิตเป็น 1:

ตัวอย่างหนึ่งบิต:
การดำเนินการผลลัพธ์
0 | 00
0 | 1
1 | 01
1 | 11
ตัวอย่าง 4 บิต:
การดำเนินการผลลัพธ์
1111 | 00001111
1111 | 00011111
1111 | 00101111
1111 | 01001111

Bitwise XOR

เมื่อดำเนินการ XOR ระดับบิตบนคู่ของบิต จะส่งกลับ 1 หากบิตต่างกัน:

ตัวอย่างหนึ่งบิต:
การดำเนินการผลลัพธ์
0 ^ 00
0 ^ 1
1 ^ 01
1 ^ 1
ตัวอย่าง 4 บิต:
การดำเนินการผลลัพธ์
1111 ^ 00001111
1111 ^ 00011110
1111 ^ 00101101
1111 ^ 01001011

JavaScript Bitwise และ (&)

Bitwise AND คืนค่า 1 ต่อเมื่อทั้งสองบิตเป็น 1:

ทศนิยมไบนารี่
5000000000000000000000000000000101
100000000000000000000000000000001
5 & ​​100000000000000000000000000000001 (1)

ตัวอย่าง

let x = 5 & 1;

JavaScript Bitwise หรือ (|)

Bitwise OR คืนค่า 1 หากหนึ่งในบิตเป็น 1:

ทศนิยมไบนารี่
5000000000000000000000000000000101
100000000000000000000000000000001
5 | 1000000000000000000000000000000101 (5)

ตัวอย่าง

let x = 5 | 1;

JavaScript Bitwise XOR (^)

Bitwise XOR คืนค่า 1 หากบิตต่างกัน:

ทศนิยมไบนารี่
5000000000000000000000000000000101
100000000000000000000000000000001
5 ^ 1000000000000000000000000000000100 (4)

ตัวอย่าง

let x = 5 ^ 1;

JavaScript Bitwise ไม่ (~)

ทศนิยมไบนารี่
5000000000000000000000000000000101
~511111111111111111111111111111010 (-6)

ตัวอย่าง

let x = ~5;

JavaScript (เติมศูนย์) Bitwise Shift ซ้าย (<<)

นี่คือกะซ้ายเติมศูนย์ บิตศูนย์อย่างน้อยหนึ่งบิตถูกผลักเข้าจากด้านขวา และบิตซ้ายสุดหลุดออกมา:

ทศนิยมไบนารี่
5000000000000000000000000000000101
5 << 10000000000000000000000000000001010 (10)

ตัวอย่าง

let x = 5 << 1;

JavaScript (รักษาเครื่องหมาย) Bitwise Shift ขวา (>>)

นี้เป็นสัญญาณรักษากะขวา สำเนาของบิตซ้ายสุดจะถูกผลักเข้ามาจากด้านซ้าย และบิตขวาสุดหลุดออกมา:

ทศนิยมไบนารี่
-511111111111111111111111111111011
-5 >> 111111111111111111111111111111101 (-3)

ตัวอย่าง

let x = -5 >> 1;

JavaScript (เติมศูนย์) เลื่อนขวา (>>>)

นี่คือกะขวาเติมศูนย์ บิตศูนย์อย่างน้อยหนึ่งบิตถูกผลักเข้ามาจากทางซ้าย และบิตขวาสุดหลุดออกมา:

ทศนิยมไบนารี่
5000000000000000000000000000000101
5 >>> 100000000000000000000000000000000000010 (2)

ตัวอย่าง

let x = 5 >>> 1;

เลขฐานสอง

เลขฐานสองที่มีชุดบิตเดียวเข้าใจง่าย:

ตัวแทนไบนารีค่าทศนิยม
000000000000000000000000000000011
000000000000000000000000000000102
0000000000000000000000000000001004
00000000000000000000000000000010008
00000000000000000000000000000001000016
0000000000000000000000000010000032
0000000000000000000000000100000064

การตั้งค่าอีกสองสามบิตเผยให้เห็นรูปแบบไบนารี:

ตัวแทนไบนารีค่าทศนิยม
0000000000000000000000000000001015 (4 + 1)
0000000000000000000000000000000110113 (8 + 4 + 1)
0000000000000000000000000000000110145 (32 + 8 + 4 + 1)

เลขฐานสองของ JavaScript ถูกจัดเก็บในรูปแบบเสริมสองรูปแบบ

ซึ่งหมายความว่าจำนวนลบเป็นค่าระดับบิต ไม่ใช่จำนวนบวก 1:

ตัวแทนไบนารีค่าทศนิยม
0000000000000000000000000000001015
11111111111111111111111111111011-5
00000000000000000000000000000001106
11111111111111111111111111111010-6
00000000000000000000000000000010100040
111111111111111111111111111011000-40

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

ตัวอย่าง

function dec2bin(dec){
  return (dec >>> 0).toString(2);
}

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

ตัวอย่าง

function bin2dec(bin){
  return parseInt(bin, 2).toString(10);
}