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中資料結構容器(list、dict、tuple、set)和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
jquery、js中String或Object與json、json陣列的互轉
** 字串轉JSON ** 第一種方式: 使用js函式eval(); dataJson=eval(dataJson);是錯誤的轉換方式。 正確的轉換方式需要加(): testJson = eval(“(” + dataJson+ “)”); e
Python中的分組函式(groupby、itertools)
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的字元輸出轉換規則,這些問題再也不是問題了。 二、實
python中pickle使用,用於list、tuple、dict、set特殊的形式進行讀寫
自動 如果 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中的一維數組、行向量、與列向量