1. 程式人生 > >python中異或、左移、右移的含義。

python中異或、左移、右移的含義。

1)異或運算:

      如 a = a ^ b:

           下面舉一個簡單的例子:

            16 ^ 12 = (00010000)'&(00001100)+(00010000)&(00001100)'=00001100+00010000)=28

      其經常在演算法中被用於交換兩個數的值:

             如:

                          a = a ^ b

                          b = a ^ b

                          a  =a ^ b

              這樣就交換了兩個數的值。

2)左移運算:

           如number左移n位數為:number * 2**n。

           12 左移一位為24,左移兩位為48,以此類推。

3)右移運算:

           如number右移n位為:number//2**n

           如12右移三位為12//2**3=8

下面給出不用+求兩個數的和就用到了異或以及左移運算。

class Solution:
    def add2(self, num1,num2):
        if not num1:
            return num2
        if not num2:
            return num2
        while num2!=0:
            n1 = num1 ^ num2
            print(n1)
            n2 = (num1&num2) << 1
            num1 = n1 &0xffffffff
            num2 = n2
        return num1 if num1>>31 == 0 else num1-4094967296

if __name__ == '__main__':
    a = Solution.add2('',12,28)
    print(a)

相關推薦

python含義

1)異或運算:       如 a = a ^ b:            下面舉一個簡單的例子:             16 ^ 12 = (00010000)'&(00001100)+(00010000)&(00001100)'=00001100+

java (邏輯與&&按位與&邏輯||按位|^)的區別?

首先名稱是不同的 &&邏輯與  ||邏輯或  它們都是邏輯運算子 & 按位與  | 按位或  它們都是位運算子 if(a==1&&b==2) 這是說既要滿足a=1也要滿足b=2 if(a==

C語言位運算子:與取反

語言位運算子:與、或、異或、取反、左移和右移 位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。C語言提供了6個位操作運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。 C語言提供的位運算

C語言位運算子及作用:與取反

一、& 按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0 應用:(1)清零 若想對一個儲存單元清零,即使其全部二進位制位為0,只要找一個二進位制數,其中各個位符合一下條件: 原來的數中為1的位,新數中相應位為0。然後使二者進行&運算,即可

python class 物件屬性轉化成dict dict轉換成物件

 一、class 或物件 屬相轉化成dict , class 和類物件的屬性有所區別,有興趣的可以輸出類和物件的 __dict__ 檢視一下, >>> class A(object): ... def __init__(self): ...

Python的元組,字典計算器代碼實例及python2與python3的區別

所有 time tor result inpu __name__ 字符 img 歡迎來到 1.計算器實例#/usr/bin/env python # -*- coding:utf-8 -*- # @time :2018/1/22 21:09 # @Author :Fen

Luogu3760 TJOI2017 和 位運算樹狀陣列

傳送門 題意:給出一個長度為$N$的非負整數序列,求其中所有連續區間的區間和的異或值。$N \leq 10^5$,所有元素之和$\leq 10^6$   設序列的字首和為$s_i$,特殊地,$s_0=0$ 因為最後答案是一個異或值,所以我們考慮按位計算答案,也就是計算所有區間和中某一位上

資料庫內連線外連線連線連線全連線交叉連線的區別

內連線: 內聯接使用比較運算子根據每個表共有的列的值匹配兩個表中的行。利用內連線可獲取兩表的公共部分的記錄。 又細分為三種: 等值連線: 在連線條件中使用等於號(=)運算子比較被連線列的列值,其查詢結果中列出被連線表中的所有列,包括其中的重複列。 不等值連線: 在

Python的容器(container)迭代器(iterator)和生成器(generator:yield)

1、容器迭代器iterator  以list容器(tuple,range,file類似)為例,list容器可以呼叫自己的__iter__()方法獲取用來迭代自己內部元素的迭代器。例如: # list容器 myList = [1, 2, 3] # 獲取list容器的迭代器 it

python資料結構容器(listdicttupleset)和C++JAVA的匯出資料型別, 陣列

list(列表):語法:列表形如 [1, 2, 3, 4] [‘小明’,‘小紅’,] ,用中括號括住,裡面是字串、布林,每一項逗號分開。 建立 宣告變數時 中括號、項,建立一個非空的列表。 num_list = [1,2,3,4] 建立一個空列表,之後再修改

運算 [轉] 與運算

1.與運算(&) 參加運算的兩個資料,按二進位制位進行“與”運算。 運算規則:0&0=0;   0&1=0;    1&0=0;     1&1=

SQL的內連線連線連線全連線交叉連線

sql連線查詢可分為三大類:內連線、外連線、交叉連線。外連線又可分為左連線,右連線,全連線。 我們最常用的應該是內連線,多表聯合查詢的時候使用的諸如“select * from a,b where a.uid=b.uid;”這就是一個典型內連線查詢的例子,實際上這句與“se

布林運算 : ^(運算XOR)&(與運算AND)|(運算OR) ~(非門NOT)

在Leetcode刷Single Number這道題的時候,自己的想法就是遍歷,想了下別的簡便想法,楞是沒想出,看了下討論區的大手的,發現了使用XOR,於是想著補補門陣列了。 Given a non-empty array of integers, every ele

python字串拆分與合併——split()join()strip()和replace()

Python3 split()方法 描述 split()通過指定分隔符對字串進行切片,如果引數num 有指定值,則僅分隔 num 個子字串 語法 split()方法語法: str.split(str="", num=string

jqueryjsStringObject與jsonjson陣列的互轉

** 字串轉JSON ** 第一種方式: 使用js函式eval(); dataJson=eval(dataJson);是錯誤的轉換方式。 正確的轉換方式需要加(): testJson = eval(“(” + dataJson+ “)”); e

Python的分組函式(groupbyitertools)

from operator import itemgetter #itemgetter用來去dict中的key,省去了使用lambda函式 from itertools import groupby #itertool還包含有其他很多函式,比如將多個list聯合起來。。 d1={'name':'zhangsa

Python排序常用到的sort sorted和argsort函式

argsort函式返回的是陣列值從小到大的索引值 Examples -------- One dimensional array:一維陣列 >>> x = np.array([3, 1, 2]) >>> np.argsort(x) array([1, 2, 0]) T

python的字元輸出(str()repr()print)

一、字元輸出的三種函式 str()、repr()、print 開發環境為python2.7 我們常常會遇到字元輸出和轉換問題,一個看似簡單的字元問題卻往往讓我們殫精竭慮。其實只要真的理解了,python的字元輸出轉換規則,這些問題再也不是問題了。 二、實

pythonpickle使用,用於listtupledictset特殊的形式進行讀寫

自動 如果 python log char pycharm 二進制 pychar tom #特殊文件的讀寫,List tuple dict setimport pickle #數據持久性模塊myList=[1,2,3,4,5,"tom is a good boy"]path

python的一維數組行向量與列向量

com 一維數組 ima .com info mage 技術分享 維數 bubuko 一維數組不是行向量也不是列向量, 一維數組: 行向量 加法 python中的一維數組、行向量、與列向量