Xor là gì

Related Articles

cần thêm liên kết tới các bài thienmaonline.vnết khác để giúp nó bách khoa hơn. Xin hãy giúp cải thiện bài thienmaonline.vnết này bằng cách thêm các liên kết có liên quan đến ngữ cảnh trong văn bản hiện tại.

Bạn đang xem:

Bài thienmaonline. vnết này. Xin hãy giúp cải tổ bài thienmaonline. vnết này bằng cách thêm những link có tương quan đến ngữ cảnh trong văn bản hiện tại. Bạn đang xem : Xor là gì

Trong ngôn ngữ máy tính, các phép toán trên thao tác bit (tiếng Anh: bitwise operation) được thực hiện trên một hoặc nhiều chuỗi bit hoặc số nhị phân tại cấp độ của từng bit riêng biệt. Các phép toán này được thực hiện nhanh, ưu tiên, được hỗ trợ trực tiếp bởi thienmaonline.vn xử lý, và được dùng để điều khiển các giá trị dùng cho so sánh và tính toán.

Đối với những loại thienmaonline.vn giải quyết và xử lý đời cũ, thường thì những phép toán trên thao tác bit nhanh hơn phép chia đáng kể, đôi lúc nhanh hơn phép nhân, và đôi lúc nhanh hơn phép cộng đáng kể. Trong khi những thienmaonline.vn giải quyết và xử lý văn minh thường thực thi phép nhân và phép cộng nhanh tương tự những phép toán trên thao tác bit nhờ vào cấu trúc đường ống lệnh của chúng dài hơn và cũng nhờ vào những lựa chọn trong phong cách thiết kế cấu trúc, những phép toán trên thao tác bit thường sử dụng ít nguồn năng lượng hơn vì sử dụng ít tài nguyên hơn.

Mục lục

Xem thêm:

1 Các toán tử thao tác bit 1.1 AND 1.2 NOT 1.3 OR 1.4 XOR 2 Dịch chuyển và quay bit 2.1 Dịch chuyển số học 2.2 Dịch chuyển luận lý 2.3 Quay không nhớ 2.4 Quay có nhớ 2.5 Dịch chuyển trong C, C++, C# và Python 2.6 Dịch chuyển trong Java 2.7 Dịch chuyển trong Pascal 3 Ứng dụng 4 Xem thêm 5 Tham khảo

Xem thêm:

Các toán tử thao tác bit

Xem thêm: Golang Là Gì – Và Tại Sao Bạn Nên Học Go 1 Các toán tử thao tác bit 1.1 AND 1.2 NOT 1.3 OR 1.4 XOR 2 Dịch chuyển và quay bit 2.1 Dịch chuyển số học 2.2 Dịch chuyển luận lý 2.3 Quay không nhớ 2.4 Quay có nhớ 2.5 Dịch chuyển trong C, C++, C# và Python 2.6 Dịch chuyển trong Java 2.7 Dịch chuyển trong Pascal 3 Ứng dụng 4 Xem thêm 5 Tham khảoXem thêm: Semiconductor Là Gì – Ứng Dụng Của Thiết Bị Bán Dẫn

Các toán tử thao tác bit (tiếng Anh: bitwise operator) là các toán tử được sử dụng chung với một hoặc hai số nhị phân để tạo ra một phép toán thao tác bit. Hầu hết các toán tử thao tác bit đều là các toán tử một hoặc hai ngôi.

Trong những lý giải dưới đây, bất kể dấu hiện nào của vị trí một bit được tính từ phía bên phải ( nhỏ nhất ), tiến dần về bên trái. Ví dụ : số nhị phân 0001 ( số một trong hệ thập phân ) có những số 0 ở mọi vị trí trừ vị trí tiên phong.

AND

Toán tử thao tác bit AND lấy 2 toán hạng nhị phân có chiều dài bằng nhau và thực hiện phép toán lý luận AND trên mỗi cặp bit tương ứng bằng cách nhân chúng lại với nhau. Nhờ đó, nếu cả hai bit ở vị trí được so sánh đều là 1, thì bit hiển thị ở dạng nhị phân sẽ là 1 (1 x 1 = 1); ngược lại thì kết quả sẽ là 0 (1 x 0 = 0). Ví dụ:

A B A&B 0 0 0 0 1 0 1 0 0 1 1 1 0101 (số thập phân 5) AND 0011 (số thập phân 3) = 0001 (số thập phân 1) A B A&B 0 0 0 0 1 0 1 0 0 1 1 1 0101 ( số thập phân 5 ) AND 0011 ( số thập phân 3 ) = 0001 ( số thập phân 1 )Phép toán này hoàn toàn có thể được sử dụng để xác lập xem nếu một bit được thiết đặt ( 1 ) hoặc trống ( 0 ). Ví dụ : Cho trước dãy bit 0011 ( số 3 trong hệ thập phân ), để xác lập xem bit thứ 2 có được thiết đặt hay không, ta sử phép toán thao tác bit AND với một dãy bit có chứa số 1 duy nhất ở bit thứ 2, ví dụ : 0011 (số thập phân 3) AND 0010 (số thập phân 2) = 0010 (số thập phân 2) 0011 ( số thập phân 3 ) AND 0010 ( số thập phân 2 ) = 0010 ( số thập phân 2 )Vì hiệu quả 0010 là khác 0, ta biết là bit thứ 2 trong dãy bit khởi đầu đã được thiết đặt. Điều này được gọi là che đậy bit. ( Bằng phép loại suy, tác dụng của mặt nạ, những phần không nên bị thay thế sửa chữa hoặc những phần không được chăm sóc. Trong trường hợp này, những giá trị 0 che đậy cho những bit không được chăm sóc ) .Nếu ta tàng trữ tác dụng, nó hoàn toàn có thể được sử dụng để tàng trữ để xóa những bit được lựa chọn trong một thanh ghi. Cho ví dụ 0110 ( số 6 trong hệ thập phân ), bit thứ 2 hoàn toàn có thể được xóa đi bằng cách sử dụng phép toán thao tác bit AND với dãy có 1 số ít 0 duy nhất ở bit thứ 2 : 0110 (số thập phân 6) AND 1101 (số thập phân 13) = 0100 (số thập phân 4) 0110 ( số thập phân 6 ) AND 1101 ( số thập phân 13 ) = 0100 ( số thập phân 4 )Vì đặc tính này, thienmaonline. vnệc kiểm tra tính chẵn lẻ của số nhị phân trở nên thuận tiện bằng cách kiểm tra giá trị của bit có giá trị thấp nhất. Sử dụng ví dụ phía trên ta có : 0110 (số thập phân 6) AND 0001 (số thập phân 1) = 0000 (số thập phân 0) 0110 ( số thập phân 6 ) AND 0001 ( số thập phân 1 ) = 0000 ( số thập phân 0 )Trong C, C + +, Java, C #, toán tử thao tác bit AND được trình diễn bằng ký hiệu ” và ” ( dấu và ) : x = y & z; x = y và z ;Trong Pascal, toán tử này là ” and “. Ví dụ : x:= y and z;

NOT

x : = y and z ;Toán tử thao tác bit NOT, hay còn gọi là còn được gọi là toán tử lấy phần bù ( complement ), là toán tử một ngôi triển khai phủ định luận lý trên từng bit, tạo thành bù 1 ( one’s complement ) của giá trị nhị phân cho trước. Bit nào là 0 thì sẽ trở thành 1, và 1 sẽ trở thành 0. Ví dụ : NOT 0111 (số thập phân 7) = 1000 (số thập phân 8) NOT 0111 ( số thập phân 7 ) = 1000 ( số thập phân 8 )

Bảng chân trị cho NOT:

A NOT A 0 1 1 0 A NOT A 0 1 1 0Phép toán thao tác bit lấy phần bù sẽ tương tự với bù 2 ( two’s complement ) của giá trị được tính trừ đi 1. Nếu phép toán bù 2 được sử dụng, như vậy :NOT x = – x – 1Đối với những số nguyên không âm, phép toán thao tác bit lấy phần bù của một số ít là “ hình ảnh phản chiếu ” của số đó tính tới điểm giữa của số lượng giới hạn số nguyên không âm. thienmaonline.vn dụ : so với số nguyên 8 – bit, NOT x = 255 – x, hoàn toàn có thể được trình diễn trên đồ thị dưới dạng một đường thẳng đi xuống mà đường thẳng đó “ lật ” một dãy tăng dần từ 0 đến 255, đến một dãy giảm dần từ 255 xuống 0. Một ví dụ đơn thuần nhưng dễ tưởng tượng là thienmaonline. vnệc đảo ngược một hình ảnh trắng đen mà mỗi px trong đó được coi là một số nguyên không âm .Trong những ngôn từ lập trình C, C + +, Java, C #, toán tử thao tác bit NOT được màn biểu diễn bằng ký hiệu ” ~ ” ( dấu ngã ). Trong Pascal, toán tử này là ” not “. Ví dụ : x = ~y; // C x = ~ y ; / / CHay x:= not y; x : = not y ;

Câu lệnh trên sẽ gán cho x giá trị “NOT y” – tức phần bù của y. Chú ý rằng, toán tử này không tương đương với toán tử luận lý “not” (biểu diễn bằng dấu chấm than “!” trong C/C++). Về vấn đề này, xin xem ở bài toán tử hoặc các bài về ngôn ngữ C/C++.

Toán tử NOT hữu dụng khi ta cần tìm bù 1 của 1 số ít nhị phân. Nó cũng hoàn toàn có thể được sử dụng làm bước tiên phong để tìm số bù 2.

OR

Phép toán trên thao tác bit OR lấy hai dãy bit có độ dài bằng nhau và triển khai phép toán lý luận bao hàm OR trên mỗi cặp bit tương ứng. Kết quả ở mỗi vị trí sẽ là 0 nếu cả hai bit là 0, ngược lại thì hiệu quả là 1. Ví dụ : 0101 (số thập phân 5) OR 0011 (số thập phân 3) = 0111 (số thập phân 7) 0101 ( số thập phân 5 ) OR 0011 ( số thập phân 3 ) = 0111 ( số thập phân 7 )

Bảng chân trị cho OR:

A B A OR B 0 0 0 0 1 1 1 0 1 1 1 1 A B A OR B 0 0 0 0 1 1 1 0 1 1 1 1Trong C, C + +, Java, C #, toán tử thao tác bit OR được màn biểu diễn bằng ký hiệu ” | ” ( vạch đứng ). Trong Pascal, toán tử này là ” or “. Ví dụ : x = y | z; // C x = y | z ; / / CHay : x:= y or z; x : = y or z ;Câu lệnh trên sẽ gán cho x hiệu quả của ” y OR z “. Chú ý rằng toán tử này không tương tự với toán tử luận lý ” or ” ( trình diễn bằng cặp vạch đứng ” | | ” trong C / C + + ). Về yếu tố này, xin xem ở bài toán tử hoặc những bài về ngôn từ C / C + + .Phép toán thao tác bit OR hoàn toàn có thể được sử dụng để thiết đặt bit được chọn thành 1. Ví dụ : Nó hoàn toàn có thể được sử dụng để bật ( set ) một bit ( hoặc cờ ) trong thanh ghi, trong đó mỗi bit đại diện thay mặt cho một trạng thái trong phép logic đúng sai ( boolean ). Vì thế, 0010 ( số 2 thập phân ) hoàn toàn có thể được xem là một bộ 4 cờ, trong đó cờ thứ nhất, thứ ba và thứ tư là trống ( 0 ) và cờ thứ hai được bật ( 1 ). Cờ thứ tư hoàn toàn có thể được bật bằng cách triển khai phép toán thao tác bit OR giữa giá trị này và một dãy bit với duy nhất bộ bit thứ 4 : 0010 (số thập phân 2) OR 1000 (số thập phân 8) 1010 (số thập phân 10) 0010 ( số thập phân 2 ) OR 1000 ( số thập phân 8 ) 1010 ( số thập phân 10 )Kỹ thuật này là một cách hiệu suất cao để tàng trữ một số ít trong những giá trị phép toán logic đúng sai ( boolean ) sử dụng ít bộ nhớ nhất hoàn toàn có thể .Khi làm thienmaonline. vnệc với những máy không có nhiều khoảng trống bộ nhớ trống, những lập trình thienmaonline. vnên thường vận dụng kĩ thuật trên. Lúc đó, thay vì khai báo tám biến kiểu bool ( C + + ) độc lập, người ta sử dụng từng bit riêng không liên quan gì đến nhau của một byte để trình diễn giá trị cho tám biến đó.

XOR

Phép toán thao tác bit XOR lấy hai dãy bit có cùng độ dài và thực hiện phép toán logic bao hàm XOR trên mỗi cặp bit tương ứng. Kết quả ở mỗi vị trí là 1 chỉ khi bit đầu tiên là 1 hoặc nếu chỉ khi bit thứ hai là 1, nhưng sẽ là 0 nếu cả hai là 0 hoặc cả hai là 1. Ở đây ta thực hiện phép so sánh hai bit, kết quả là 1 nếu hai bit khác nhau và là 0 nếu hai bit giống nhau. Ví dụ:

0101 (số thập phân 5) XOR 0011 (số thập phân 3) 0110 (số thập phân 6) 0101 ( số thập phân 5 ) XOR 0011 ( số thập phân 3 ) 0110 ( số thập phân 6 )( cách nhớ dễ nhất là : 2 bit giống nhau trả về 0, 2 bit khác nhau trả về 1 )

Bảng chân trị cho XOR:

A B A XOR B 0 0 0 0 1 1 1 0 1 1 1 0 A B A XOR B 0 0 0 0 1 1 1 0 1 1 1 0Phép toán thao tác bit XOR hoàn toàn có thể được sử dụng để đảo ngược những bit được lựa chọn trong thanh ghi ( còn được gọi là bật ( set ) hoặc lật ( flip ) ). Bất kỳ bit nào được bật bằng cách thực thi phép toán thao tác bit XOR nó với 1. Ví dụ : cho dãy bit 0010 ( số 2 thập phân ), bit thứ hai và thứ tư hoàn toàn có thể được kích hoạt bằng cách sử dụng phép toán thao tác bit XOR với một dãy bit có chứa 1 ở vị trí thứ hai và thứ tư : 0010 (số thập phân 2) XOR 1010 (số thập phân 10) = 1000 (số thập phân 8) 0010 ( số thập phân 2 ) XOR 1010 ( số thập phân 10 ) = 1000 ( số thập phân 8 )Kỹ thuật này hoàn toàn có thể được sử dụng để tinh chỉnh và điều khiển dãy bit biểu lộ những bộ chứa phép toán logic đúng sai ( boolean ) .Trong C, C + +, Java, C #, toán tử thao tác bit XOR được màn biểu diễn bằng ký hiệu ” ^ ” ( dấu mũ ). Trong Pascal, toán tử này là ” xor “. Ví dụ : x = y ^ z; // C x = y ^ z ; / / CHay : x:= y xor z;

x:= y xor z;

Câu lệnh trên sẽ gáp trình thienmaonline. vnên hợp ngữ ( Assembly ) thường sử dụng toán tử XOR để gán giá trị của một thanh ghi ( register ) về 0. Khi thực thi phép toán XOR cho một mẫu bit với chính bản thân nó, mẫu nhị phân nhận được sẽ toàn bit 0. Trên nhiều kiến trúc máy tính, sử dụng XOR để gán 0 cho một thanh ghi sẽ được CPU giải quyết và xử lý nhanh hơn so với chuỗi thao tác tương ứng để nạp và lưu giá trị 0 vào thanh ghi.

Dịch chuyển và quay bit

Các phép di dời bit nhiều lúc được xem là những phép toán thao tác bit, chính do chúng sẽ xem một giá trị dưới dạng một dãy bit hơn là dưới dạng số lượng số ( numerial quantity ). Trong những phép toán này, những chữ số sẽ được chuyển dời, hoặc di dời, sang trái hoặc phải. Các thanh ghi trong thienmaonline.vn giải quyết và xử lý máy tính có độ dài cố định và thắt chặt, vì thế một vài bit sẽ bị ” di dời ra ngoài ” thanh ghi ở một đầu, trong khi đó thì một lượng bit tương ứng sẽ được ” di dời vào ” ở đầu còn lại ; sự độc lạ ở những phép toán di dời bit nằm ở chỗ cách chúng xác lập giá trị của những bit được di dời vào.

Dịch chuyển số học

Chuyên mục: Chuyên mục : Hỏi Đáp

More on this topic

Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Advertismentspot_img

Popular stories