第一章之位向量和位運算

2022-03-21 05:58:55 字數 1059 閱讀 6410

1.基本的位運算符號

&(按位與)

| (按位或)

運算子兩邊對應位置有一邊為1時,運算結果為1。只有兩邊同時為0時,結果才為0.

>> (向右移位)

乙個運算元進行右移運算的時候,結果就是等於運算元除以2的n次方,n就是右移的位數

<< (向左移位)

乙個運算元進行左移運算的時候,實際上就是等於該運算元乘以2的次方,n就是左移的位數

^ (抑或)

只有兩邊的對應位置的值不一樣時,結果為1,否則結果為0。作用如下

00000101 ^ 00000011 = 00000110

~ (取反)

對每一位取反

00000111 取反  11111000 

2.運算子的一般技巧

移位運算和乘除直接的規律:具有如下幾個規則

5.int 儲存過程中制定位置的獲取和設定

使用乙個大陣列,令n=1000000,若陣列型別為int,則陣列定義為int a[n/32+1](因為乙個int佔4個位元組,一共           是8位,+1實現的進制度)

顯然a[0]可以表示0~31的整數,以此類推,a[i]可以表示32*i~32*(i+1)-1的整數,若a[i]中的第j位為1,則表示            待排序介乎額中存在32*i+j這麼乙個數,否則不存在。對於待排序集合中的某乙個元素b,則有:

i = b / 32;

j = b % 32;

這兩句換成位運算可以寫成

i = b >> 5;

j = b & 0x1f

如果要將元素對應位置為1,則按以下方式即可:

a[i] = a[i] | (0x1 << j)

6.不同型別儲存位向量的問題

char、short、int、long、unsigned char、unsigned short、unsigned int、unsigned long都可以進行移位操作,而double、float、bool、long double則不可以進行移位操作。

位運算和乘法之間的一些例項

a*33=a*32+a*1=a*2^5+a*2^0=a<<5+a<<0;

演算法很美第一章 位運算的奇巧淫技

知識點 a a 0 a 0 a 乙個數與0進行按位異或,結果是他自己 對乙個序列進行按位異或,可以消除掉序列中的重複項,比如 a a b c c b 根據第1 2條規則 對乙個序列補一下,就可以將不重複的元素變成重複的元素,重複的元素變成不重複的,從而可以找到原本序列中重複項。比如原本是 a b c...

python第一章筆記 第一章 基礎

參與除法的兩個數中有乙個數為浮點數,結果也為浮點數 如 1.0 2,1 2.0,1.0 2.0 python print 1.0 2 結果 0.5 print 1 2.0 結果 0.5 print 1.0 2.0 結果 0.5 整數 整數,計算結果的小數部分被截除,只保留整數部分 不會四捨五入 如 ...

Python 初學筆記 第一章 運算

目錄三元運算 計算機可以進行的運算有很多種,運算按種類可以分為算數運算 比較運算 邏輯運算 賦值運算 成員運算 身份運算 位運算。假設 a 10,b 20 運算子描述例項 加 兩個物件相加 a b 輸出結果30 減 得到符數或是乙個數減去另乙個數 a b 輸出結果10 乘 兩個數相乘或是返回乙個被重...