3 5 2 位操作符(學習筆記)

2022-08-30 03:45:07 字數 3038 閱讀 7996

數值 18 的 32 位表示法:00000000000000000000000000010010

其中前 31 位表示整數的值,第 32 位表示數值的符號,0 表示正數,1表示負數。

31 位中的每一位都表示 2 的冪。第一位表示 20,第二位表示 21,以此類推。

負數同樣以二進位製碼儲存,但使用的是二進位制補碼。需要經過下面三個步驟:

求 -18 的二進位製碼:

1、求 18 的二進位製碼:

0000 0000 0000 0000 0000 0000 0001 0010
2、將 0 和 1 互換

1111 1111 1111 1111 1111 1111 1110 1101
3、將二進位制反碼 + 1

1111 1111 1111 1111 1111 1111 1110 1101

+ 1

---------------------------------------

1111 1111 1111 1111 1111 1111 1110 1110

~ 表示,返回數值的反碼。

const num = 25;

num.tostring(2); // '11001'

// 00000000000000000000000000011001

const num2 = ~num;

console.log(num2); // -26,運算元的負數 -1

// 等同於

const num3 = -num - 1;

按位非是在數值表示的最底層執行操作,因此速度更快。

& 表示,將兩個數值的每一位對齊,根據下表中的規則,對相同位置上的兩個數進行 and 操作。

第乙個數值的位

第二個數值的位結果1

1110

0010

000對 1 和 4 進行位與操作。

1 & 4; // 0

// 1 的二進位制位

0000 0000 0000 0000 0000 0000 0000 0001

// 4 的二進位制位

0000 0000 0000 0000 0000 0000 0000 0100

// and --------------------------------

0000 0000 0000 0000 0000 0000 0000 0000

| 表示。

第乙個數值的位

第二個數值的位結果1

1110

1011

000對 1 和 4 進行位或操作。

1 | 4; // 5

// 1 的二進位制位

0000 0000 0000 0000 0000 0000 0000 0001

// 4 的二進位制位

0000 0000 0000 0000 0000 0000 0000 0100

// or --------------------------------

0000 0000 0000 0000 0000 0000 0000 0101

parseint('00000000000000000000000000000101', 2); // 轉十進位制,5

^ 表示。

第乙個數值的位

第二個數值的位結果1

1010

1011

000兩個數值位上,只有乙個 1 時,才返回 1。

對 1 和 4 進行位異或操作。

1 ^ 4; // 5

// 1 的二進位制位

0000 0000 0000 0000 0000 0000 0000 0001

// 4 的二進位制位

0000 0000 0000 0000 0000 0000 0000 0100

// xor --------------------------------

0000 0000 0000 0000 0000 0000 0000 0101

parseint('00000000000000000000000000000101', 2); // 轉十進位制,5

對 4 和 4 進行位異或操作。

4 ^ 4; // 0

// 4 的二進位制位

0000 0000 0000 0000 0000 0000 0000 0100

// 4 的二進位制位

0000 0000 0000 0000 0000 0000 0000 0100

// xor --------------------------------

0000 0000 0000 0000 0000 0000 0000 0000

parseint('00000000000000000000000000000000', 2); // 轉十進位制,0

將數值的所有位向左移動指定的位數。

const val = 2; // 二進位制:10

const val2 = val << 3; // 二進位制:10000 十進位制:16

const val = 16; // 二進位制:10000

const val2 = val >> 3; // 二進位制:10 十進位制:2

// -16 的二進位製碼

11111111111111111111111111110000

// -16 >>> 3

00011111111111111111111111111110 // 右移後 以 0 填充左側的位

parseint('00011111111111111111111111111110', 2); // 十進位制:536870910

位操作符學習筆記

位操作符分為and or xor。and操作 如果兩個位都是1,結果為1,否則為0,操作符為 0 1000 101or操作 如果兩個位都是0,結果為0,否則為1,操作符為 0 1001 111xor操作 如果兩個位不同,結果為1,否則為0,操作符為 0 1001 110下面兩個表示式顯示了怎麼樣使用...

c語言操作符 位操作符 移位操作符

1 按位操作符 1.1 按位 與 雙目運算子 僅當兩個運算元都為1時,結果為1,否則為0。參與運算的數以補碼方式出現。例 9 5 1 0000 1001 9的補碼 0000 0101 5的補碼 0000 0001 1的補碼 應用 a 通常將某些位清零或保留某些位。例如 將a的高八位清零,保留低八位,...

按位 操作符的學習

沒有按位計算的思維的程式設計師,不是乙個合格的程式設計師。所以程式猿們需要補足這塊的短板。2的8次方是256.也就是8個bit 8位 就能儲存乙個分割槽的數字。let ipstr 192.168.199.1 function str2ip ipstr console.log 轉化成int let s...