二進位制中的運算子
與運算:&
兩者都為1則為1,否則為0
1&1 = 1,1&0 = 0, 0&1 = 0,0 & 0 = 0
或運算:|
兩者都為0為0,否則為1
1 | 1 = 1, 1 | 0= 1, 0 | 1 = 1, 0 | 0 = 0
非運算:~
1取0 0 取1
~1 = 0 ~ 0 = 1
~(1001) = 0110
異或運算^
兩者相等為0,不等為1
1^1 = 0 1^0= 1 0^1 = 1 0^0 = 0
位運算操作符:
有符號:《左移 >>右移
無符號: >>>右移 忽略符號位,空位都以0補齊,不存在無符號左移,因為左移是右邊補0,有符號和無符號都一樣,所以沒必要
原碼 反碼 補碼 概念
計算機儲存乙個數使用的是二進位制,最高位為符號位,其餘位為數值;反碼:正數的反碼為原碼本身,負數反碼符號位不變,剩餘的數字位取反;補碼:正數的補碼為原碼本身,負數的補碼為反碼+1
由於計算機只有加法沒有減法,所以1-1 被設計成 1 + (-1),使用補碼使得兩個相反數的補碼相加為0,同時符號位也參與運算之中
與運算 或運算 異或 能怎麼用:
與運算:求兩個二進位制數的相同為1的位,
例如:n&(n-1)相差乙個低位的1 ,所以可以用n&(n-1)迴圈來求二進位制中的1的位數。
或運算:求兩個二進位制中相同為0的位,
例如:求乙個四位二進位制數加上乙個最小的數使它成為四位二進位制的最大數(我稱之為滿二進位制)。1001 | 0110 = 1111,同時可以使用異或來求這個數1111 ^ 1001 = 0110
異或:求兩個二進位制數相同的位或者不同的位(相同的為0,不同的為1)
例如:可以使用乙個滿二進位制(我自己理解的,比如說四位滿二進位制為1111,八位滿二進位制位11111111)異或乙個任意乙個數,就是表示這個滿二進位制數%任意數,前提是這兩個二進位制數的最高位相等,比如說1111 必須異或1***,而不能異或0***。
二進位制位運算子
二進位制位運算子用於直接對二進位制位進行計算,一共7個。i i 0 上面這行 的意思就是將i 不管是整數或小數 轉為32位整數。利用這一特性,可以寫乙個函式,將任意數值轉為32位整數。function toint32 x toint32 1.001 1 toint32 1.999 1 toint32...
python 教程 二進位制運算子
計算機發明之初就是為了計算數字,程式語言就是為了更好的利用計算機進行數字計算的。python作為乙個偏向於運算的程式語言,自然也少不了數字運算。本次我們將學習python中關於二進位制的運算的部分。1.十進位制轉二進位制 函式介紹 bin 函式用於將十進位制數字轉化為二進位制數字 用法 bin 十進...
js 二進位制位運算子
ecmascript 整數有兩種型別,即有符號整數 允許用正數和負數 和無符號整數 只允許用正數 在 ecmascript 中,所有整數字面量預設都是有符號整數,這意味著什麼呢?有符號整數使用 31 位表示整數的數值,用第 32 位表示整數的符號,0 表示正數,1 表示負數。數值範圍從 214748...