Cái nào không phải là toán tử bitwise trong python?

Tất cả các toán tử này đều có điểm chung -- chúng là toán tử "bitwise". Nghĩa là, chúng hoạt động trên các số [thông thường], nhưng thay vì xử lý số đó như thể nó là một giá trị đơn lẻ, chúng xử lý nó như thể nó là một chuỗi bit, được viết dưới dạng nhị phân bổ sung hai. Nhị phân bù hai giống như biểu diễn nhị phân cổ điển cho số nguyên dương nhưng hơi khác đối với số âm. Các số âm được biểu diễn bằng cách thực hiện phép toán bù hai trên giá trị tuyệt đối của chúng. Vì vậy, một bản tóm tắt ngắn gọn về nhị phân bổ sung hai là theo thứ tự

Nhị phân bổ sung của hai cho số nguyên dương

  • 0 được viết là "0"
  • 1 được viết là "1"
  • 2 được viết là "10"
  • 3 là "11"
  • 4 là "100"
  • 5 là "101"
  • .
  • .
  • 1029 là "10000000101" == 2**10 + 2**2 + 2**0 == 1024 + 4 + 1

Nhị phân bổ sung của hai cho số nguyên âm

Các số âm được viết với một số đứng đầu thay vì số 0 đứng đầu. Vì vậy, nếu bạn chỉ sử dụng 8 bit cho các số bù hai của mình, thì bạn coi các mẫu từ "00000000" đến "01111111" là các số nguyên từ 0 đến 127 và dành "1xxxxxxx" để viết số âm. Một số âm, -x, được viết bằng cách sử dụng mẫu bit cho [x-1] với tất cả các bit được bổ sung [được chuyển từ 1 thành 0 hoặc 0 thành 1]. Vậy -1 là phần bù[1 - 1] = phần bù[0] = "11111111" và -10 là phần bù[10 - 1] = phần bù[9] = phần bù["00001001"] = "11110110". Điều này có nghĩa là các số âm giảm dần đến -128 ["10000000"]

Tất nhiên, Python không sử dụng số 8 bit. Nó ĐÃ SỬ DỤNG để sử dụng tuy nhiên nhiều bit có nguồn gốc từ máy của bạn, nhưng vì đó không phải là thiết bị di động nên gần đây nó đã chuyển sang sử dụng số lượng bit VÔ HẠN. Do đó, số -5 được xử lý bởi các toán tử bitwise như thể nó được viết ". 1111111111111111111011"

chà. Với phần mở đầu đó [và này, có lẽ bạn đã biết điều này rồi], các toán tử rất dễ giải thích

các nhà khai thác

x > yTrả về x với các bit được dịch chuyển sang phải theo y vị trí. Điều này giống như //'ing x by 2**y. x & y Thực hiện "bitwise and". Mỗi bit của đầu ra là 1 nếu bit tương ứng của x AND của y là 1, ngược lại là 0. x. yThực hiện "bitwise hoặc". Mỗi bit của đầu ra là 0 nếu bit tương ứng của x AND của y là 0, ngược lại là 1. ~ xTrả về phần bù của x - số bạn nhận được bằng cách chuyển đổi từng số 1 thành số 0 và từng số 0 thành số 1. Điều này cũng giống như -x - 1. x ^ yThực hiện "bitwise loại trừ hoặc". Mỗi bit của đầu ra giống với bit tương ứng trong x nếu bit đó trong y là 0 và nó là phần bù của bit trong x nếu bit đó trong y là 1

Chỉ cần nhớ về chuỗi vô hạn 1 bit ở dạng số âm và tất cả những điều này sẽ có ý nghĩa

Các lớp khác

Một điểm nữa. Python cho phép nạp chồng toán tử, vì vậy một số lớp có thể được viết để cho phép các toán tử theo bit, nhưng với một số ý nghĩa khác. Chẳng hạn, mô-đun bộ mới cho Python 2. 3 công dụng. và & cho hợp và giao

Python cung cấp các toán tử bitwise,

print[x | y]
print[bin[x | y]]
# 11
# 0b1011
9[AND],
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
0[OR],
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
0[XOR],
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
1[NOT, đảo ngược],
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
2[SHIFT TRÁI],
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
3[SHIFT PHẢI]

Bài viết này mô tả các nội dung sau

  • Bitwise AND.
    print[x | y]
    print[bin[x | y]]
    # 11
    # 0b1011
    
    9
  • Bitwise HOẶC.
    print[x | y]
    print[bin[x | y]]
    # 11
    # 0b1011
    
    0
  • Bitwise XOR.
    print[x | y]
    print[bin[x | y]]
    # 11
    # 0b1011
    
    0
  • Hoạt động bitwise với số nguyên âm
  • Bitwise KHÔNG, đảo ngược.
    print[x | y]
    print[bin[x | y]]
    # 11
    # 0b1011
    
    1
  • Dịch chuyển bit.
    print[x | y]
    print[bin[x | y]]
    # 11
    # 0b1011
    
    2,
    print[x | y]
    print[bin[x | y]]
    # 11
    # 0b1011
    
    3

Để biết thêm thông tin về cách chuyển đổi các số và chuỗi nhị phân, bát phân và thập lục phân bằng cách sử dụng

print[x ^ y]
print[bin[x ^ y]]
# 3
# 0b11
0,
print[x ^ y]
print[bin[x ^ y]]
# 3
# 0b11
1,
print[x ^ y]
print[bin[x ^ y]]
# 3
# 0b11
2 và
print[x ^ y]
print[bin[x ^ y]]
# 3
# 0b11
3, hãy xem các bài viết sau

  • Chuyển đổi nhị phân, bát phân, thập phân và thập lục phân trong Python

Xem bài viết sau về cách đếm số lượng

print[x ^ y]
print[bin[x ^ y]]
# 3
# 0b11
4 trong biểu diễn nhị phân cho số nguyên
print[x ^ y]
print[bin[x ^ y]]
# 3
# 0b11
5

  • Đếm số bit 1 trong python [int. bit_count]

Đối với các phép toán Boolean trên các loại

print[x ^ y]
print[bin[x ^ y]]
# 3
# 0b11
6 [
print[x ^ y]
print[bin[x ^ y]]
# 3
# 0b11
7,
print[x ^ y]
print[bin[x ^ y]]
# 3
# 0b11
8] thay vì các phép toán theo bit, hãy xem bài viết sau. Sử dụng
print[x ^ y]
print[bin[x ^ y]]
# 3
# 0b11
9 và
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
80 thay vì
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
9 và
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
0

  • Toán tử Boolean trong Python [and, or, not]

Liên kết được tài trợ

Bitwise AND.
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
9

Bitwise AND với toán tử

print[x | y]
print[bin[x | y]]
# 11
# 0b1011
9

print[x | y]
print[bin[x | y]]
# 11
# 0b1011
9

nguồn. and_or_bit. py

Bitwise HOẶC.
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
0

Bitwise OR với toán tử

print[x | y]
print[bin[x | y]]
# 11
# 0b1011
0

print[x | y]
print[bin[x | y]]
# 11
# 0b1011

nguồn. and_or_bit. py

Bitwise XOR.
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
0

Bitwise XOR với toán tử

print[x | y]
print[bin[x | y]]
# 11
# 0b1011
0

________số 8

nguồn. and_or_bit. py

Đầu vào và đầu ra cho từng bit của AND, OR và XOR như sau

Đầu vào 1 Đầu vào 2 ANDORXOR11110100110101100000

Liên kết được tài trợ

Hoạt động bitwise với số nguyên âm

Các hoạt động bitwise trên số nguyên âm được xử lý như thể các giá trị được biểu thị bằng phần bù của hai

  • Phần bù của hai - Wikipedia

Tuy nhiên, lưu ý rằng nếu bạn chuyển đổi một số nguyên âm thành chuỗi nhị phân bằng cách sử dụng

print[x ^ y]
print[bin[x ^ y]]
# 3
# 0b11
0 hoặc
print[x ^ y]
print[bin[x ^ y]]
# 3
# 0b11
3, dấu trừ sẽ được sử dụng thay cho định dạng phần bù của hai

Nếu bạn muốn lấy một chuỗi được biểu thị bằng biểu diễn bù hai, hãy lấy theo chiều bit VÀ

print[x | y]
print[bin[x | y]]
# 11
# 0b1011
9 của số chữ số tối đa được yêu cầu, ví dụ:
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
62 [=
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
63] cho 4 bit,
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
64 cho 8 bit và
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
65 cho 16 bit

  • Chuyển đổi nhị phân, bát phân, thập phân và thập lục phân trong Python

print[x | y]
print[bin[x | y]]
# 11
# 0b1011
8

nguồn. and_or_bit. py

Bitwise KHÔNG, đảo ngược.
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
1

Toán tử

print[x | y]
print[bin[x | y]]
# 11
# 0b1011
1 mang lại phép nghịch đảo bit. Đảo ngược bitwise của
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
68 được định nghĩa là
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
69

  • 6. Biểu thức - Phép toán số học đơn nguyên và bitwise — Python 3. 9. 1 tài liệu

Nếu giá trị đầu vào

print[x | y]
print[bin[x | y]]
# 11
# 0b1011
68 được coi là phần bù của hai và tất cả các bit được đảo ngược, thì nó tương đương với
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
69

Chuyển đổi

print[x | y]
print[bin[x | y]]
# 11
# 0b1011
72 thành một chuỗi không dẫn đến một chuỗi có các bit của giá trị ban đầu bị đảo ngược

print[x | y]
print[bin[x | y]]
# 11
# 0b1011
6

nguồn. and_or_bit. py

Bằng cách thực hiện phép toán AND để tạo một chuỗi biểu diễn phần bù của hai chuỗi, bạn có thể thu được một chuỗi có đảo ngược các bit

Ví dụ: để lấy chuỗi đảo ngược bit gồm 4 chữ số, hãy chỉ định

print[x | y]
print[bin[x | y]]
# 11
# 0b1011
73 với
print[x ^ y]
print[bin[x ^ y]]
# 3
# 0b11
3 và đệm nó bằng số không

print[x | y]
print[bin[x | y]]
# 11
# 0b1011
7

nguồn. and_or_bit. py

Dịch chuyển bit.
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
2,
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
3

Dịch chuyển trái và dịch chuyển phải với người vận hành

print[x | y]
print[bin[x | y]]
# 11
# 0b1011
2,
print[x | y]
print[bin[x | y]]
# 11
# 0b1011
3

print[x | y]
print[bin[x | y]]
# 11
# 0b1011
6

nguồn. and_or_bit. py

Đối với các giá trị âm, bit dấu được mở rộng và dịch chuyển, các dấu dương và âm không thay đổi. Các giá trị âm được coi là có

print[x ^ y]
print[bin[x ^ y]]
# 3
# 0b11
4 vô hạn ở phía bên trái

print[x | y]
print[bin[x | y]]
# 11
# 0b1011
8

nguồn. and_or_bit. py

Thật khó hiểu nếu bạn coi nó như một giá trị số, vì vậy tốt hơn là coi nó như một chuỗi bù hai

Toán tử nào không phải là toán tử bitwise?

1. Cái nào trong số này không phải là toán tử bitwise? .

Chủ Đề