Hướng dẫn JS

JS TRANG CHỦ Giới thiệu JS JS Đến đâu Đầu ra JS Tuyên bố JS Cú pháp JS Bình luận JS Biến JS JS Hãy JS Const Toán tử JS Số học JS Chuyển nhượng JS Các loại dữ liệu JS Các hàm JS Đối tượng JS Sự kiện JS Chuỗi JS Phương thức chuỗi JS Tìm kiếm chuỗi JS Mẫu chuỗi JS Số JS Phương thức số JS Mảng JS Phương thức mảng JS Sắp xếp mảng JS Lặp lại mảng JS JS Array Const JS ngày Định dạng ngày JS Ngày lấy phương thức JS Phương pháp đặt ngày JS Toán JS JS ngẫu nhiên JS Booleans So sánh JS Điều kiện JS Chuyển đổi JS JS Loop cho JS Loop For In JS Loop For Of JS lặp trong khi JS Break JS lặp lại Bộ JS Bản đồ JS JS Typeof Chuyển đổi loại JS JS Bitwise JS RegExp Lỗi JS Phạm vi JS JS Hoists Chế độ nghiêm ngặt JS JS từ khóa này Hàm mũi tên JS Lớp JS JS JSON Gỡ lỗi JS Hướng dẫn kiểu JS Các phương pháp hay nhất về JS JS sai lầm Hiệu suất JS JS dành riêng từ

Phiên bản JS

Phiên bản JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Lịch sử JS

Đối tượng JS

Định nghĩa đối tượng Thuộc tính đối tượng Phương thức đối tượng Hiển thị đối tượng Người truy cập đối tượng Trình tạo đối tượng Nguyên mẫu đối tượng Đối tượng lặp lại Bộ đối tượng Bản đồ đối tượng Tham chiếu đối tượng

Các hàm JS

Định nghĩa hàm Tham số chức năng Lời mời hàm Gọi hàm Áp dụng chức năng Chức năng đóng cửa

Lớp JS

Giới thiệu Lớp học Kế thừa giai cấp Lớp tĩnh

JS Async

Gọi lại JS JS không đồng bộ JS hứa JS Async / Await

JS HTML DOM

Giới thiệu DOM Phương thức DOM Tài liệu DOM Phần tử DOM DOM HTML Các biểu mẫu DOM DOM CSS Hoạt ảnh DOM Sự kiện DOM Trình xử lý sự kiện DOM Điều hướng DOM Nút DOM Bộ sưu tập DOM Danh sách nút DOM

BOM trình duyệt JS

Cửa sổ JS Màn hình JS Vị trí JS Lịch sử JS JS Navigator JS Popup Alert Thời gian JS JS Cookies

API web JS

Giới thiệu API Web API biểu mẫu web API lịch sử web API lưu trữ web API công nhân web API tìm nạp web API vị trí địa lý web

JS AJAX

Giới thiệu về AJAX AJAX XMLHttp Yêu cầu AJAX Phản hồi AJAX Tệp XML AJAX AJAX PHP AJAX ASP Cơ sở dữ liệu AJAX Ứng dụng AJAX Ví dụ về AJAX

JS JSON

Giới thiệu JSON Cú pháp JSON JSON so với XML Các loại dữ liệu JSON Phân tích cú pháp JSON JSON Stringify Đối tượng JSON Mảng JSON Máy chủ JSON JSON PHP HTML JSON JSON JSONP

JS so với jQuery

Bộ chọn jQuery jQuery HTML jQuery CSS jQuery DOM

Đồ họa JS

Đồ họa JS JS Canvas JS Plotly JS Chart.js JS Google Chart JS D3.js

Ví dụ về JS

Ví dụ về JS JS HTML DOM Đầu vào HTML JS Đối tượng HTML JS Sự kiện HTML JS Trình duyệt JS Trình chỉnh sửa JS Bài tập JS JS Quiz Chứng chỉ JS

Tham khảo JS

Đối tượng JavaScript Đối tượng DOM HTML


Hoạt động Bitwise trong JavaScript


Toán tử Bitwise JavaScript

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

Các ví dụ

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 Sử dụng Toán hạng Bitwise 32 bit

JavaScript lưu trữ các số dưới dạng số dấu phẩy động 64 bit, nhưng tất cả các phép toán bit đều được thực hiện trên số nhị phân 32 bit.

Trước khi thực hiện thao tác bitwise, JavaScript chuyển đổi số thành số nguyên có dấu 32 bit.

Sau khi thao tác bitwise được thực hiện, kết quả được chuyển đổi trở lại các số JavaScript 64 bit.

Các ví dụ trên sử dụng số nhị phân không dấu 4 bit. Bởi vì điều này ~ 5 trả lại 10.

Vì JavaScript sử dụng số nguyên có dấu 32 bit nên nó sẽ không trả về 10. Nó sẽ trả về -6.

00000000000000000000000000000101 (5)

1111111111111111111111111111111010 (~ 5 = -6)

Một số nguyên có dấu sử dụng bit ngoài cùng bên trái làm dấu trừ.



Bitwise VÀ

Khi một bit theo chiều AND được thực hiện trên một cặp bit, nó sẽ trả về 1 nếu cả hai bit đều là 1.

Ví dụ một chút:
Hoạt độngKết quả
0 & 00
0 & 10
1 & 00
1 & 11
Ví dụ 4 bit:
Hoạt độngKết quả
1111 & 00000000
1111 & 00010001
1111 & 00100010
1111 & 01000100

Bitwise HOẶC

Khi một bit OR được thực hiện trên một cặp bit, nó sẽ trả về 1 nếu một trong các bit là 1:

Ví dụ một chút:
Hoạt độngKết quả
0 | 00
0 | 1
1 | 01
1 | 11
Ví dụ 4 bit:
Hoạt độngKết quả
1111 | 00001111
1111 | 00011111
1111 | 00101111
1111 | 01001111

Bitwise XOR

Khi một XOR theo chiều bit được thực hiện trên một cặp bit, nó sẽ trả về 1 nếu các bit khác nhau:

Ví dụ một chút:
Hoạt độngKết quả
0 ^ 00
0 ^ 1
1 ^ 01
1 ^ 1
Ví dụ 4 bit:
Hoạt độngKết quả
1111 ^ 00001111
1111 ^ 00011110
1111 ^ 00101101
1111 ^ 01001011

JavaScript Bitwise AND (&)

Bitwise AND chỉ trả về 1 nếu cả hai bit đều là 1:

Số thập phânNhị phân
500000000000000000000000000000101
10000000000000000000000000000000001
5 & ​​100000000000000000000000000000001 (1)

Thí dụ

let x = 5 & 1;

JavaScript Bitwise HOẶC (|)

Bitwise OR trả về 1 nếu một trong các bit là 1:

Số thập phânNhị phân
500000000000000000000000000000101
10000000000000000000000000000000001
5 | 100000000000000000000000000000101 (5)

Thí dụ

let x = 5 | 1;

JavaScript Bitwise XOR (^)

Bitwise XOR trả về 1 nếu các bit khác nhau:

Số thập phânNhị phân
500000000000000000000000000000101
10000000000000000000000000000000001
5 ^ 100000000000000000000000000000100 (4)

Thí dụ

let x = 5 ^ 1;

JavaScript Bitwise KHÔNG (~)

Số thập phânNhị phân
500000000000000000000000000000101
~ 51111111111111111111111111111111010 (-6)

Thí dụ

let x = ~5;

JavaScript (Zero Fill) Bitwise Left Shift (<<)

Đây là sự dịch chuyển sang trái không điền. Một hoặc nhiều bit 0 được đẩy vào từ bên phải và các bit ngoài cùng bên trái rơi ra:

Số thập phânNhị phân
500000000000000000000000000000101
5 << 100000000000000000000000000001010 (10)

Thí dụ

let x = 5 << 1;

JavaScript (Bảo quản Dấu hiệu) Chuyển sang Phải theo Bitwise (>>)

Đây là một dấu hiệu bảo quản ca phải. Bản sao của bit ngoài cùng bên trái được đẩy vào từ bên trái và các bit ngoài cùng bên phải rơi ra:

Số thập phânNhị phân
-51111111111111111111111111111111011
-5 >> 11111111111111111111111111111111101 (-3)

Thí dụ

let x = -5 >> 1;

JavaScript (Zero Fill) Shift Phải (>>>)

Đây là một sự thay đổi bên phải điền bằng không. Một hoặc nhiều bit 0 được đẩy vào từ bên trái và các bit ngoài cùng bên phải rơi ra:

Số thập phânNhị phân
500000000000000000000000000000101
5 >>> 100000000000000000000000000000010 (2)

Thí dụ

let x = 5 >>> 1;

Số nhị phân

Các số nhị phân chỉ có một bit được thiết lập rất dễ hiểu:

Biểu diễn nhị phânGiá trị thập phân
00000000000000000000000000000000011
000000000000000000000000000000102
000000000000000000000000000001004
00000000000000000000000000001000số 8
000000000000000000000000000001000016
0000000000000000000000000010000032
0000000000000000000000000100000064

Đặt thêm một vài bit nữa sẽ hiển thị mẫu nhị phân:

Biểu diễn nhị phânGiá trị thập phân
000000000000000000000000000001015 (4 + 1)
0000000000000000000000000000110113 (8 + 4 + 1)
0000000000000000000000000010110145 (32 + 8 + 4 + 1)

Số nhị phân JavaScript được lưu trữ ở định dạng bổ sung của hai.

Điều này có nghĩa là một số âm KHÔNG phải là bitwise của số cộng với 1:

Biểu diễn nhị phânGiá trị thập phân
000000000000000000000000000001015
1111111111111111111111111111111011-5
000000000000000000000000000001106
1111111111111111111111111111111010-6
0000000000000000000000000010100040
1111111111111111111111111111011000-40

Chuyển đổi thập phân sang nhị phân

Thí dụ

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

Chuyển đổi nhị phân sang thập phân

Thí dụ

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