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

歡迎訪問 生活随笔!

生活随笔

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

python

python与或非位运算_python位运算

發布時間:2024/4/11 python 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python与或非位运算_python位运算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是位運算

位運算就是把數字當成二進制來進行計算,位運算有六種:&(與), |(或), ^(異或), ~(非), <>(右移)

&(與)

&運算規則:兩個位都為1,結果為1,否則為0

# &(與)

a = 3

b = 9

print(a & b)

# a----0101

# b----1001

# a&b--0001

# a&b=1

## |(或)

|運算規則:兩個位至少有一個為1,結果為1,否則為0

```python

# |(或)

a = 3

b = 9

print(a | b)

a----0101

b----1001

a|b--1101

a|b=11

## ^(異或)

^運算規則:兩個位不同,結果為1,否則為0

```python

# ^(異或)

a = 3

b = 9

print(a ^ b)

# a----0101

# b----1001

# a^b--1100

# a^b=10

## ~(非)

~運算規則:對所有位取反,1變成0,0變成1

```python

a = 5

print(~a)

猜猜結果是多少?是不是以為是2,哈哈哈

看一下打印結果

```python

-6

what? 檢查下計算過程

# a----101

# ~a--010

# ~a=2

按照運算規則,沒錯啊

這是為什么呢?其實,計算機中是以補碼的形式來進行計算的

對于正數:

原碼=反碼=補碼

對于負數:

反碼=原碼的符號位不變,其余位取反;

補碼=反碼+1

使用sys.getsizeof可以查看對象在內存空間占用的大小

import sys

a = 5

print(sys.getsizeof(a)) # 28

說明a在內存中占的位數是28

現在我們來一步一步等推算~a

a的二進制形式

0000 00000000 00000000 00000101

由于運算是以補碼的形式進行,因此要將原碼轉化成補碼,由于a為整數,因此其補碼就等于原碼

```python

# a的補碼

0000 00000000 00000000 00000101

對a的補碼進行~運算,結果為

```python

# 結果的補碼

1111 11111111 11111111 11111010

到這里要注意了,計算機運算的時候是以補碼的形式,但是顯示到終端上還是以原碼的形式,因此我們要把結果再轉化回原碼

由于結果為負數(符號為1),先把補碼轉化成反碼,反碼=補碼-1

# 結果的反碼

1111 11111111 11111111 11111001

再計算結果的原碼

# 結果的原碼

1000 00000000 00000000 00000110

再把結果的二進制轉化成十進制形式,符號為1說明是負數,-(4+2)= -6,因此結果為-6

上面的計算過程只是讓我們對計算機如何進行位運算有一個認識,實際上對于任意數a,~a = -(a+1),根本不用手工轉化成二進制計算

## <

<

```python

a = 9

print(a << 2) # 36

對于整數a,a<

## >>(右移位)

'>>'的規則:運算數的各二進位全部右移若干位,>> 右邊的數字指定了移動的位數

```python

a = 9

print(a >> 2) # 2

對于整數a,a<

總結

以上是生活随笔為你收集整理的python与或非位运算_python位运算的全部內容,希望文章能夠幫你解決所遇到的問題。

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