欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python中位運(yùn)算的簡(jiǎn)單實(shí)現(xiàn)

 更新時(shí)間:2022年06月28日 08:46:09   作者:玩轉(zhuǎn)測(cè)試開(kāi)發(fā)  
位運(yùn)算就是直接對(duì)整數(shù)在內(nèi)存中對(duì)應(yīng)的二進(jìn)制位進(jìn)行操作,一般是將數(shù)字化為二進(jìn)制數(shù)后進(jìn)行操作。本文將利用Python語(yǔ)言實(shí)現(xiàn)位運(yùn)算,感興趣的可以了解一下

簡(jiǎn)介

程序中的數(shù)在計(jì)算機(jī)內(nèi)存中都是以二進(jìn)制的形式存在的,位運(yùn)算就是直接對(duì)整數(shù)在內(nèi)存中對(duì)應(yīng)的二進(jìn)制位進(jìn)行操作,一般是將數(shù)字化為二進(jìn)制數(shù)后進(jìn)行操作。

應(yīng)用場(chǎng)景

在常規(guī)操作和位運(yùn)算的操作中使用位運(yùn)算,可以提升性能。但是會(huì)造成代碼難以理解,建議合理利用。

1、統(tǒng)計(jì)奇數(shù)

2、統(tǒng)計(jì)偶數(shù)

3、統(tǒng)計(jì)不相同數(shù)等

4、求相反數(shù)

位運(yùn)算分有6種:

1、按位與:兩個(gè)位都為1時(shí),結(jié)果才為1(統(tǒng)計(jì)奇數(shù))即全1為1。

2、按位或:兩個(gè)位都為0時(shí),結(jié)果才為0(統(tǒng)計(jì)偶數(shù))即全0為0。

3、按位異或:兩個(gè)位相同為0,相異為1(常用統(tǒng)計(jì)不相同數(shù))即不同為1。

4、按位取反:0變1,1變0,相當(dāng)于 -x-1

5、左移運(yùn)算:各二進(jìn)位全部左移若干位,高位丟棄,低位補(bǔ)0。

6、右移運(yùn)算:各二進(jìn)位全部右移若干位,對(duì)無(wú)符號(hào)數(shù),高位補(bǔ)0,有符號(hào)數(shù)進(jìn)行補(bǔ)符號(hào)位(算術(shù)右移),或者補(bǔ)0(邏輯右移)。

案例源碼

# -*- coding: utf-8 -*-
# time: 2022/5/22 17:56
# file: bitwise.py
# 公眾號(hào): 玩轉(zhuǎn)測(cè)試開(kāi)發(fā)

# &:兩個(gè)位都為1時(shí),結(jié)果才為1(統(tǒng)計(jì)奇數(shù))即全1為1。
a1 = 10
b1 = 9
"""
10 = 0b1010
9  = 0b1001
8  = 0b1000
"""
print(bin(a1))
print(bin(b1))
print(a1 & b1)  # 8
print(int("0b1000", 2))

# |:兩個(gè)位都為0時(shí),結(jié)果才為0(統(tǒng)計(jì)偶數(shù))即全0為0。
a2 = 10
b2 = 9
"""
10 = 0b1010
9  = 0b1001
11 = 0b1011
"""
print(bin(a2))
print(bin(b2))
print(a2 | b2)  # 11
print(int("0b1011", 2))

# ^:兩個(gè)位相同為0,相異為1(常用統(tǒng)計(jì)不相同數(shù))即不同為1。
a3 = 10
b3 = 9
"""
10 = 0b1010
9  = 0b1001
3  = 0b0011
"""
print(bin(a3))
print(bin(b3))
print(a3 ^ b3)  # 11
print(int("0b0011", 2))

# ~:0變1,1變0,相當(dāng)于 -x-1
a4 = 10
"""
10 = 0b1010
-x-1 = -11
"""
print(bin(a4))
print(~a4)  # -11
print(int("-0b1011", 2))

# 求相反數(shù)
print(~a4 + 1)  # -10

# <<:各二進(jìn)位全部左移若干位,高位丟棄,低位補(bǔ)0,即:x << n = x * (2 ** n)
a5 = 10
"""
10 = 0b1010
x = 10 * 2 ** 3 = 10 * 2 * 2 * 2
"""
b5 = a5 << 3
print(bin(b5))
print(b5)  # 80
print(int("0b1010000", 2))

# >>:各二進(jìn)位全部右移若干位,對(duì)無(wú)符號(hào)數(shù),高位補(bǔ)0,有符號(hào)數(shù)進(jìn)行補(bǔ)符號(hào)位(算術(shù)右移),或者補(bǔ)0(邏輯右移)。
#     即:x << n = x / (2 ** n)
a6 = 64
"""
64 = 0b1000000
x = 64 / (2 ** 3) = 64 / (2 * 2 * 2)
"""
b6 = a6 >> 3
print(bin(b6))
print(b6)  # 8

# 經(jīng)典案例:使用 ^ 找出出現(xiàn)一次的數(shù)
a7 = 1 ^ 1 ^ 2
a8 = 1 ^ 2 ^ 1
a9 = 2 ^ 1 ^ 1
print(a7)
print(a8)
print(a9)

# 統(tǒng)計(jì)原始方法和位運(yùn)算方法花費(fèi)的時(shí)間
import time

loop = 30000000
start1 = time.time()
odd_list1 = []

for i in range(loop):
    if i & 1 == 1:
        odd_list1.append(i)
end1 = time.time()
print(f"time1:{end1 - start1}")

start2 = time.time()
odd_list2 = []

for i in range(loop):
    if i % 2 == 1:
        odd_list1.append(i)
end2 = time.time()
print(f"time2:{end2 - start2}")

# time1:5.262001037597656
# time2:4.736037492752075

到此這篇關(guān)于詳解Python中位運(yùn)算的簡(jiǎn)單實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python位運(yùn)算內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python運(yùn)行提示缺少模塊問(wèn)題解決方案

    Python運(yùn)行提示缺少模塊問(wèn)題解決方案

    這篇文章主要介紹了Python運(yùn)行提示缺少模塊問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 計(jì)算機(jī)二級(jí)python學(xué)習(xí)教程(2) python語(yǔ)言基本語(yǔ)法元素

    計(jì)算機(jī)二級(jí)python學(xué)習(xí)教程(2) python語(yǔ)言基本語(yǔ)法元素

    這篇文章主要為大家詳細(xì)介紹了計(jì)算機(jī)二級(jí)python學(xué)習(xí)教程的第2篇,Python語(yǔ)言基本語(yǔ)法元素,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Python 深入了解opencv圖像分割算法

    Python 深入了解opencv圖像分割算法

    本文主要介紹了Python通過(guò)opencv實(shí)現(xiàn)圖像分割的詳細(xì)過(guò)程與代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • Python可視化繪制圖表的教程詳解

    Python可視化繪制圖表的教程詳解

    python?有許多可視化工具,但本文主要為大家介紹一下Matplotlib。Matplotlib是一種2D的繪圖庫(kù),它可以支持硬拷貝和跨系統(tǒng)的交互,感興趣的可以了解一下
    2022-10-10
  • python程序封裝為win32服務(wù)的方法

    python程序封裝為win32服務(wù)的方法

    這篇文章主要為大家詳細(xì)介紹了python程序封裝為win32服務(wù)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Numpy數(shù)據(jù)轉(zhuǎn)換成image并保存的實(shí)現(xiàn)示例

    Numpy數(shù)據(jù)轉(zhuǎn)換成image并保存的實(shí)現(xiàn)示例

    本文主要介紹了Numpy數(shù)據(jù)轉(zhuǎn)換成image并保存的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • Python實(shí)現(xiàn)基于Excel數(shù)據(jù)繪制棋盤圖

    Python實(shí)現(xiàn)基于Excel數(shù)據(jù)繪制棋盤圖

    這篇文章主要為大家介紹了如何根據(jù)可視化的需要,利用Python將Excel中的數(shù)據(jù)用棋盤圖的樣式來(lái)展示,文中的示例代碼簡(jiǎn)潔易懂,需要的可以參考一下
    2023-07-07
  • Python多線程實(shí)例教程

    Python多線程實(shí)例教程

    這篇文章主要介紹了Python多線程,對(duì)比了新舊版本的Python在實(shí)現(xiàn)多線程的特點(diǎn),并采用threading模塊的實(shí)例來(lái)講述了多線程的技巧,需要的朋友可以參考下
    2014-09-09
  • Python爬蟲(chóng)Requests庫(kù)的使用詳情

    Python爬蟲(chóng)Requests庫(kù)的使用詳情

    這篇文章主要介紹了Python爬蟲(chóng)Requests庫(kù)的使用詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • 基于web管理OpenVPN服務(wù)的安裝使用詳解

    基于web管理OpenVPN服務(wù)的安裝使用詳解

    這篇文章主要為大家介紹了基于web管理OpenVPN服務(wù)的安裝使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02

最新評(píng)論