Python нь дараах битийн операторуудыг хангадаг бөгөөд эдгээр нь хоёртын бүхэл төрлийн int утгын бит тус бүр дээр логик холболт, логик салгах, онцгой дизьюнкц, битийн урвуу, зүүн битийн шилжилт, баруун битийн шилжилтийг гүйцэтгэдэг.
&
|
^
~
<<
>>
Энэ хэсэгт бид эхлээд дараах зүйлийг тайлбарлах болно.
- уулзвар(AND) :
&
- салгах(OR) :
|
- ОНЦГОЙ-ЭСВЭЛ үйл ажиллагаа(XOR) :
^
Дараа нь бид дараахь зүйлийг хэлэлцэх болно.
- Сөрөг бүхэл тоон дээрх битийн үйлдлүүд
- жаахан эргүүлэх( NOT) :
~
- бит шилжилт:
<<
,>>
Бүхэл тоог хоёртын, наймтын, арван зургаант тооллын системд хэрхэн бичих, хоёртын, наймтын, арван зургаатын тоо, мөрийг хэрхэн хөрвүүлэх талаар дараах функцуудыг ашиглан дэлгэрэнгүй мэдээллийг дараах нийтлэлээс үзнэ үү.
bin()
oct()
hex()
format()
- Холбоотой нийтлэлүүд:Python дээр хоёртын, наймтын, арван арвантын тоо болон мөрүүдийг хооронд нь хөрвүүлэх
Мөн битийн үйлдлүүдийн оронд логик үйлдлүүдийг (Боолийн үйлдлүүд) логик үйлдлүүдийг (үнэн, худал) дараах нийтлэлээс үзнэ үү. &,|-ийн оронд ба,эсвэл ашиглана уу.
- Холбоотой нийтлэлүүд:Python-ийн логик операторууд ба, эсвэл, биш (логик холболт, салгах, үгүйсгэх)
уулзвар(AND) :&оператор
Энэ нь логик БА ашиглах жишээ юм & AMP; оператор, үр дүнг bin() ашиглан хоёртын тэмдэглэгээнд мөр болгон хөрвүүлсэн.
x = 9 # 0b1001 y = 10 # 0b1010 print(x & y) print(bin(x & y)) # 8 # 0b1000
салгах(OR) :|оператор
|-г ашиглан логик бүтээгдэхүүний (OR) жишээ оператор, үр дүнг bin()-ээр хоёртын тэмдэглэгээнд мөр болгон хувиргаж, хамтдаа гаргана.
print(x | y) print(bin(x | y)) # 11 # 0b1011
ОНЦГОЙ-ЭСВЭЛ үйл ажиллагаа(XOR) :^оператор
Bin() ашиглан хоёртын тэмдэглэгээнд мөр болгон хөрвүүлсэн үр дүнтэй хослуулсан ^ операторыг ашигласан логик бүтээгдэхүүний (XOR) жишээ.
print(x ^ y) print(bin(x ^ y)) # 3 # 0b11
Логик AND, OR, XOR бит бүрийн оролт ба гаралтын хоорондын хамаарлыг доорх хүснэгтэд үзүүлэв.
Оролт 1 | Оролт 2 | уулзвар(AND) | салгах(OR) | ОНЦГОЙ-ЭСВЭЛ үйл ажиллагаа(XOR) |
---|---|---|---|---|
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 1 |
0 | 0 | 0 | 0 | 0 |
Сөрөг бүхэл тоон дээрх битийн үйлдлүүд
Сөрөг бүхэл тоон дээр битийн үйлдлийг гүйцэтгэхэд утгыг хоёр нөхөх хэлбэрээр илэрхийлсэн мэт боловсруулдаг.
Гэхдээ хэрэв та bin() эсвэл format() ашиглан сөрөг бүхэл тоог хоёртын мөр болгон хөрвүүлбэл үнэмлэхүй утга нь хоёрын нөхөх форматын оронд хасах тэмдэгтэй байх болно гэдгийг анхаарна уу.
Хэрэв та хоёрын нөхөх илэрхийлэлтэй тэмдэгт мөр авахыг хүсвэл доор үзүүлсэн шиг AND-г хамгийн ихдээ шаардлагатай бит цифрээр авна уу.
- 4 битийн хувьд
0b1111
(=0xf
) - 8 битийн хувьд
0xff
- 16 битийн хувьд
0xffff
Та хоёрын нөхөх дүрслэлийн мөрийг авч болно (бит бүрийг урвуу болгож, 1 нэмнэ).
x = -9 print(x) print(bin(x)) # -9 # -0b1001 print(bin(x & 0xff)) print(format(x & 0xffff, 'x')) # 0b11110111 # fff7
- Холбоотой нийтлэлүүд:Python дээр хоёртын, наймтын, арван арвантын тоо болон мөрүүдийг хооронд нь хөрвүүлэх
жаахан эргүүлэх:~оператор
~операторуудтай бит эргүүлэх жишээ.
Битийн эргэлт нь урвуулагдсан бит бүрийн утга биш юм. Энэ операторыг ашиглах үед буцах утга нь дараах байдалтай байна.~x
#ERROR!-(x+1)
-(x+1)
Энэ утга нь оролтын утгыг х-г хоёрын нөхөх хэлбэр гэж үзэж, бүх битийг урвуу оруулсантай тэнцэнэ.
Дээр дурдсанчлан Python-д сөрөг бүхэл тоог bin(), format() гэх мэтийг ашиглан хоёртын тэмдэгт мөр болгон хөрвүүлэхдээ хоёрын нөхөх хэлбэрээр биш харин хасах тэмдэгтэй үнэмлэхүй утгаараа байна. Иймээс ~x-г шууд мөр болгон хөрвүүлснээр анхны утгын битүүд урвуулагдсан стринг үүсэхгүй.
x = 9 # 0b1001 print(~x) print(bin(~x)) # -10 # -0b1010
Бид AND үйлдлийг хийж, хоёрын нөхөх дүрслэлийн мөр болгон хувиргахад анхны утгын битүүд урвуу байгааг харж болно.
Нэмж дурдахад, жишээлбэл, 4 оронтой битийн мөрийг урвуу байдлаар нь (тэмдэг бит орхигдуулсан) авахын тулд format()-г ашиглан ANDed утгын тэгийг дараах байдлаар бөглөнө үү.04b'
print(bin(~x & 0xff)) print(format(~x & 0b1111, '04b')) # 0b11110110 # 0110
бит шилжилт:<<,>>
Бит шилжүүлэх операторуудыг ашиглан зүүн битийн шилжилт ба баруун битийн шилжилтийн жишээ.
x = 9 # 0b1001 print(x << 1) print(bin(x << 1)) # 18 # 0b10010 print(x >> 1) print(bin(x >> 1)) # 4 # 0b100
Сөрөг утгын хувьд тэмдгийн битийг сунгаж, шилжүүлж, эерэг/сөрөг тэмдэг нь хэвээр байна. Сөрөг утга нь зүүн тийшээ 1 секундын шугамын дүрс юм.
x = -9 print(bin(x)) print(bin(x & 0xff)) # -0b1001 # 0b11110111 print(x << 1) print(bin(x << 1)) print(bin((x << 1) & 0xff)) # -18 # -0b10010 # 0b11101110 print(x >> 1) print(bin(x >> 1)) print(bin((x >> 1) & 0xff)) # -5 # -0b101 # 0b11111011
Тоогоор сэтгэх нь тодорхойгүй тул хоёрын нөхөх илэрхийлэлийн утсаар бодох нь дээр.