Yêu cầu mọi thông tin sao chép từ blog này phải được ghi rõ đầy đủ: Thông tin được sao chép từ "http://www.dangngochoangthanh.blogspot.com".

Cool wallpaper http://www.fancymessage.com

EMOJI KEYBOARD PRO http://emojiselector.com

THƯ VIỆN HÌNH ĐỘNG FLASH ANIMATION: http://flashanimationlibrary.blogspot.ru/

Hệ thống học trực tuyến đang được phát triển và sẽ đưa vào sử dụng vào cuối năm nay. Hãy xem qua một số demo của Học Trực Tuyến.


HỌC TRỰC TUYẾN ĐÃ CUNG CẤP PHIÊN BẢN TRUY CẬP QUA MOBILE http://dangngochoangthanh.blogspot.com/?m=1

XEM KÊNH HỌC TRỰC TUYẾN TRÊN YOUTUBE



Search on This Blog

Saturday, September 11, 2010

Toán tử dịch bit


Các toán tử này được sử dụng đến tính toán trên các số nguyên bằng cách tính toán trên các bit. Các toán tử hội bit, tuyển bit, tuyển loại bit và phủ định bit được tính như sau: chúng ta chuyển đổi các số thập phân sang nhị phân tương ứng, sau đó sử dụng các phép toán tương ứng cho từng bit theo vị trí của nó. Ví dụ như ở trên 210=102, 310=112 và ta sẽ thực hiện các phép toán tương ứng với từng bit. Bit thứ nhất (từ phải sang trái) là 0&1=1, bit thứ hai 1&1=1, như vậy kết quả của phép toán 2&3 là 112 hay 310. Tương tự cho các phép toán còn lại. Nếu hai số có độ dài bit khác nhau, thì ta chỉ việc bổ sung thêm 0 ở số có độ dài bit ngắn hơn, sau đó thực hiện các phép toán như đã nêu. Ở đây bạn lưu ý rằng phép toán tuyển loại sẽ có chân trị là 1 nếu hai bit tương ứng là khác nhau, nếu giống nhau thì tương ứng là 0(1^1=0^0=0, 1^0=0^1=1). Các phép toán hội, tuyển và phủ định vẫn còn đúng như phép toán hội, tuyển và phủ định trên kiểu dữ liệu logic.
Toán tử
Kết quả
~
Toán tử phủ định bit. Các bit 1 sẽ chuyển thành 0 và ngược lại.
Ví dụ ~101=010.
&
Toán tử hội bit. Hội của hai bit 1 bằng 1. Trong mọi trường hợp còn lại, ta nhận được 0.
Ví dụ.

1
0
1
1
(tương ứng 11 trong hệ thập phân)
&
0
1
0
1
(tương ứng với 5 trong hệ thập phân)

0
0
0
1
(tương ứng với 1 trong hệ thập phân)
Nghĩa là 11&5=1.
|
Toán tử tuyển bit. Tuyển của hai bit 0 bằng 0. Trong mọi trường hợp còn lại, ta nhận được 1.
Ví dụ.

1
0
1
1
(tương ứng 11 trong hệ thập phân)
|
0
0
0
1
(tương ứng với 1 trong hệ thập phân)

1
0
1
1
(tương ứng với 11 trong hệ thập phân)
Nghĩa là 11|1=11.
^
Toán tử tuyển loại bit. Tuyển loại của hai bit khác nhau bằng 1. Trong mọi trường hợp còn lại, ta nhận được 0.
Ví dụ.

1
0
1
1
(tương ứng 11 trong hệ thập phân)
^
0
0
0
1
(tương ứng với 1 trong hệ thập phân)

1
0
1
0
(tương ứng với 10 trong hệ thập phân)
Nghĩa là 11^1=10.
>> 
Toán tử dịch bit sang phải. Dịch chuyển toàn bộ dãy bit sang phải theo số bit được chỉ định. Nếu là số dương, ta bổ sung các bit 0 vào đầu. Nếu là số âm, ta bổ sung các số 1 vào đầu.
Ví dụ.
Đối với số dương
0
1
0
1
1
(tương ứng 11 trong hệ thập
phân)
>> 




1
dịch sang phải 1 bit
0
0
1
0
1
(tương ứng với 5 trong hệ thập phân)
Nghĩa là 11>>1=5.
Đối với số âm
1
1
1
0
1
1
(tương ứng -11 trong hệ thập phân)
>> 





2
dịch sang phải 2 bit
1
1
1
1
1
0
(tương ứng -3 trong hệ thập p
ân)
Nghĩa là -11>>2=-3.
Các bạn cũng cần lưu ý rằng, trong các biểu diễn ở trên, nếu hệ thống được chọn là 32 bit, thì chúng ta cần lấp đầy số bit này:
- Nếu số dương thì các bit còn lại sẽ được bổ sung 0 vào phía trước.
- Nếu số âm thì các bit còn lại sẽ được bổ sung 1 vào phía trước.
Trong các ví dụ trên, phần dãy bit để trắng tương ứng với bit dấu – 1 tương ứng với – và 0 tương ứng với +.
<< 
Toán tử dịch bit sang trái. Dịch chuyển toàn bộ dãy bit sang trái theo số bit được chỉ định.
Ví dụ.
Đối với số dương
+
0
0
1
0
1
1
(tương ứng 11 trong hệ thập phân)
<< 





2
dịch sang trái 2 bit

1
0
1
1
0
0
(tương ứng 44 trong hệ thập phân)
Nghĩa là 11<<2=44.
&=
|=
^=
>>=
<<=
Các phép toán gán hợp nhất trên bit.
Các toán tử dịch trái bit << và dịch phải bit >> nếu thực hiện trực tiếp trên số nguyên hệ thập phân, sẽ được tính như sau: dịch trái tương đương vưới a*2b và dịch phải tương đương với a/2b.

5 comments:

  1. BẠN ƠI CHO MÌNH HỎI :
    z = (x xor (not y)) là sao

    ReplyDelete
  2. Bạn có thể viết dưới dạng ngôn ngữ C như sau:
    z = x ^ (~y);
    Cách thực hiện thì như giải thích ở trên cho từng toán tử ^ và ~

    ReplyDelete
  3. viết y
    viết (not y)
    xor : giống -> 0, khác -> 1

    ReplyDelete
  4. x=x<<1 viết tắt lại thành x<<=1 được không các bạn? Lâu ngày không dùng tự nhiên quên.

    ReplyDelete
    Replies
    1. Được nhé! Tương tự như x=x+1 và x+=1 vậy

      Delete