日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python按位翻转_Python成为专业人士笔记-位操作符

發(fā)布時間:2023/12/20 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python按位翻转_Python成为专业人士笔记-位操作符 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

“專業(yè)人士筆記”系列目錄:創(chuàng)帆云:Python成為專業(yè)人士筆記--強烈建議收藏!每日持續(xù)更新!?zhuanlan.zhihu.com

按位操作符直接操作二進制的字符串,這些是最基本的操作,并直接由中央處理器所支持。

在處理設備驅動程序、圖形底層、加密和網絡通信時,這些位操作是必需的。本文提供一些有用的知識和對應Python的按位運算符示例

Bitwise NOT 位操作:否

?運算符將翻轉數(shù)字中的所有位, 由于計算機使用帶符號的數(shù)字表示形式占大多數(shù),所以值得注意的是,二進制補碼符號用于在寫入負數(shù)的情況下對負二進制數(shù)進行前導(1) 編碼 而不是前導零(0)。

這意味著,如果您使用8位來表示您的二進制補碼,則將處理 從0000 0000到0111 1111代表從0到127的數(shù)字并保留1xxx xxxx來代表負數(shù)

八位兩位補碼的數(shù):

#位無符號值二進制補碼值

0000 0000 0 0

0000 0001 1 1

0000 0010 2 2

0111 1110 126 126

0111 1111 127 127

1000 0000 128 -128

1000 0001 129 -127

1000 0010 130 -126

1111 1110 254 -2

1111 1111 255 -1

從本質上講,這意味著1010 0110的無符號值為166(通過加(128 * 1)+(64 * 0)+(32 * 1)+(16 * 0)+(8 * 0)+(4 * 1)+(2 * 1)+(1 * 0)),它具有一個二進制補碼值 -90(通過添加(128 * 1)-(64 * 0)-(32 * 1)-(16 * 0)(8 * 0)-(4 * 1)-(2 * 1)-(1 * 0),以及對值的補碼)。

這樣,負數(shù)的范圍可以降至-128(1000 0000)。 Zero(0)表示為0000 0000,負號表示一(-1)為1111 1111,

這等同于?n = -n-1:

# 0 = 0b0000 0000

~0

#輸出: -1

#-1 = 0b1111 1111

# 1 = 0b0000 0001

~1

Out: -2

-2 = 1111 1110

2 = 0b0000 0010

~2

#輸出: -3

#因為-3 = 0b1111 1101

#123 = 0b0111 1011

~123

#輸出: -124

#因為 -124 = 0b1000 0100

注意,此操作應用于正數(shù)時的總體效果可以總結為:

~n -> -|n+1|

然后,當應用于負數(shù)時,相應的效果是:

~-n -> |n-1|

以下示例說明了最后一條規(guī)則:

#-0 = 0b0000 0000

~-0

#輸出 -1

#-1 = 0b1111 1111

# 0是這個規(guī)則的例外,因為-0總是== 0

#-1 = 0b1000 0001

~-1

#輸出: 0

#0 = 0b0000 0000

#-2 = 0b1111 1110

~-2

#輸出: 1

#1 = 0b0000 0001

# -123 = 0b1111 1011

~-123

#輸出: 122

#122 = 0b0111 1010

Bitwise AND 位操作:與

&操作符將執(zhí)行二進制“與”操作,如果在兩個操作數(shù)中都存在位,則復制該位。比如:

# 0 & 0 = 0

# 0 & 1 = 0

# 1 & 0 = 0

# 1 & 1 = 1

# 60 = 0b111100

# 30 = 0b011110

60 & 30

#輸出: 28

#28 = 0b11100

bin(60 & 30)

#輸出: 0b11100

Bitwise OR 位操作:或

‘|’操作符將執(zhí)行一個二進制“or”,如果它存在于任何一個操作數(shù)中,那么就會復制一個位,比如:

# 0 | 0 = 0

# 0 | 1 = 1

# 1 | 0 = 1

# 1 | 1 = 1

#60 = 0b111100

#30 = 0b011110

60 | 30

#輸出: 62

#62 = 0b111110

bin(60 | 30)

#輸出: 0b111110

Bitwise Left Shift 位操作: 向左位移

‘<

#2 = 0b10

2 << 2

#輸出: 8

#8 = 0b1000

bin(2 << 2)

#輸出: 0b1000

執(zhí)行1的左位移位相當于乘以2

7 << 1

#輸出: 14

執(zhí)行n的左位移位相當于乘以2**n :

3 << 4

#輸出: 48

Bitwise Right Shift 位操作: 向右位移

‘>>’ 操作符將執(zhí)行按位“右移”,即左操作數(shù)的值按右操作數(shù)提供的位數(shù)右移:

# 8 = 0b1000

8 >> 2

#輸出: 2

# 2 = 0b10

bin(8 >> 2)

#輸出: 0b10

執(zhí)行1的右位移位等于2的整數(shù)除法 :

36 >> 1

#輸出: 18

15 >> 1

#輸出: 7

執(zhí)行n的右位移位等于2**n的整數(shù)除法 :

48 >> 4

#輸出: 3

59 >> 3

#輸出: 7

重賦值操作

所有的位操作符(除了 ‘~’ ),都有固定的用法:

a = 0b001

a &= 0b010

#輸出 a = 0b000

a = 0b001

a |= 0b010

#輸出 a = 0b011

a = 0b001

a <<= 2

#輸出 a = 0b100

a = 0b100

a >>= 2

#輸出 a = 0b001

a = 0b101

a ^= 0b011

#輸出 a = 0b110

禁止轉載,違者必究!

總結

以上是生活随笔為你收集整理的python按位翻转_Python成为专业人士笔记-位操作符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。