位運算子與其他

2022-06-20 03:27:11 字數 1303 閱讀 7243

0x00  前言

----萬般皆苦,唯有自渡;人生苦短,我亦朝陽

0x01  機器數--二進位制數

機器數數字在計算機中的二進位制表示形式,且有對應的符號位

符號位二進位制數的最高位(第一位),且正數為0,負數為1。如00000110為6,10000110為-6

機器的字長

機器內部裝置一次能表示的二進位制位數。

8bit=1byte,即,位元組的整數倍為字長,如8位、16位

真值帶符號位的機器數對應的真正數值。

如二進位制數10000110的真值為為二進位制的-0000110,或十進位制的-6,而不是134

0x02原碼,反碼,補碼等

概念

使用

原碼符號位加上真值的絕對值

如-6的原碼為10000110,8的原碼為00001000

反碼正數的反碼為其本身,即與原碼相同;

負數的反碼為原碼的基礎上, 符號位不變,其餘各位取反(0和1互變)

如-6的反碼為11111001;6的反碼還是00000110

補碼正數的補碼為其本身,即與原碼相同;

負數的補碼為其反碼+1

數0的補碼表示是唯一,即00000000

如-6的補碼為11111010;8的補碼還是00001000

總結正數的原碼、反碼、補碼相同;負數的如上

負數的補碼轉十進位制

1、各位取反;2、轉十進位制;3、加符號,再-1

如11111010:1、00000101;    2、5;     3、-6

0x03  位運算子

表示式/宣告

二進位制數

備註int a=6;

00000110

定義整型變數

int b=11;

00001011

a&b00000010

按位與。有0為0

a|b00001111

按位或。有1為1

a^b00001101

按位異或。不同為1

~a11111001

取反。0和1互變

a>>2

00000001

a的二進位制數都向右移2位。低位捨棄,高位:

a為正數時,最高位補0

a為負數時,最高位看編譯系統是補0/1

a<<2

00011000

a的二進位制數都向左移2位。高位丟棄,低位補0

0x02  編外

位運算子,「,」逗號運算子,

位運算子有 按位與 按位或 按位異或 按位取反 優先順序從高到低,依次為 按位與運算有兩種典型用法,一是取乙個位串資訊的某幾位,如以下 擷取x的最低7位 x 0177。二是讓某變數保留某幾位,其餘位置0,如以下 讓x只保留最低6位 x x 077。按位或運算的典型用法是將乙個位串資訊的某幾位置為1。...

運算子之位運算子

右移 負數 無符號右移 或 異或 與 非 說明 位運算子都是作用在二進位製上的 比如 n 50 n 1 結果是多少?100 n 2 結果是多少?200 n 5 結果是多少?1600 為什麼會是這樣的呢?運算的邏輯如下 1,n 50 2,n的二進位制是 0011 0010 3,0011 0010 左移...

ECMAScript 運算子 位運算子

位運算子是在數字底層 即表示數字的 32 個數字 進行操作的 重溫整數 ecmascript 整數有兩種型別,即有符號整數 允許用正數和負數 和無符號整數 只允許用正數 在 ecmascript 中,所有整數字面量預設都是有符號整數,這意味著什麼呢?有符號整數使用 31 位表示整數的數值,用第 32...