>> 右移
負數》 無符號右移
| 或^ 異或
& 與~ 非
說明:位運算子都是作用在二進位製上的
比如 n = 50 ;
n << 1 結果是多少?100
n << 2 結果是多少? 200
n << 5 結果是多少? 1600
為什麼會是這樣的呢?
運算的邏輯如下:
1,n = 50;
2,n的二進位制是:0011 0010
3,0011 0010 左移一位 0110 0100;缺位補0或者1
4,然後再把0110 0100轉成十進位制結果為100
5,同理:<< 2,右移兩位,<<5,右移五位
敲黑板:
n << 1 == n * 21
n << 5 == n * 25
n << a == n * 2a
比如 n = 50 ;
n >> 1 結果是多少?25
n >> 2 結果是多少?12
n >> 5 結果是多少?1
為什麼會是這樣的呢?
運算的邏輯如下:
1,n=50;
2,n的二進位制是:0011 0010
3,0011 0010 右移一位 000110 01 缺位補0
4,然後再把000110 01轉成十進位制結果為25
5,同理:>> 2,右移兩位,>> 5,右移五位
敲黑板:
n >> 1 == n / 21
n >> 5 == n / 25
n >> a == n / 2a
注意:
n/2a 取整,這就是為什麼n >> 2 == 12,n >> 2 != 12.5
比如 n = -50 ;
n >> 1 結果是多少?-25
n >> 2 結果是多少?-13
n >> 5 結果是多少?-2
為什麼會是這樣的呢?
運算的邏輯如下:
1,首先要知道原碼、反碼和(補碼 = 反碼+1)
2,n = -50;
3,n的絕對值是 「50」
4,二進位制:0000 0000 0000 0000 0000 0000 0011 0010;
5,反碼是:1111 1111 1111 1111 1111 1111 1100 1101;
6,補碼是:1111 1111 1111 1111 1111 1111 1100 1110;
7,同理:>> 2,右移兩位,>> 5,右移五位,缺位補1
敲黑板:
n >> 1 == n / 21
n >> 5 == n / 25 -1
n >> a == n / 2a (-1)
注意:
n/2a 取整,如果有餘數則再減一,且最小值只能為-1 這就是為什麼 -50 >> 2 == -13,n >> 2 != -12
和 >> 一樣
比如 n = -50 ;
n >>> 1 結果是多少?2147483623
n >>> 2 結果是多少?1073741811
n >>> 5 結果是多少?134217726
為什麼會是這樣的呢?
運算的邏輯如下:
1,首先要知道原碼、反碼和(補碼 = 反碼+1)
2,n = -50;
3,n的絕對值是 「50」,
4,二進位制:0000 0000 0000 0000 0000 0000 0011 0010;
5,反碼是:1111 1111 1111 1111 1111 1111 1100 1101;
6,補碼是:1111 1111 1111 1111 1111 1111 1100 1110;
7,同理:>> 2,右移兩位,>> 5,右移五位,缺位補0
8,神奇的時候出來了,這個缺位補了0,這個數字就變成了正整數了,所以一下子就變得很大
敲黑板:
敲不出來了
注意:
第八點很重要
比如 3|5 = 7
1,3的二進位制:0011
2,5的二進位制:0101
3,計算方式:同為0時為0,否則為1
4,結果就是:0111
5,轉成十進位制就是:7
比如 3^5 = 6
1,3的二進位制:0011
2,5的二進位制:0101
3,計算方式:相同則為0,不相同則為1
4,結果就是:0110
5,轉成十進位制就是:6
比如 -3& -5 = -12
1,-3的二進位制:1111 1111 1111 1111 1111 1111 1111 1101
2,-10的二進位制:1111 1111 1111 1111 1111 1111 1111 0110
3,計算方式:同為1時為1,否則為0
4,結果就是:1111 1111 1111 1111 1111 1111 1111 0100
5,轉成十進位制就是:-12
比如 ~ -3 = 2
1,-3的二進位制:1111 1111 1111 1111 1111 1111 1111 1101
2,計算方式:0轉1,1轉0
3,~-3的二進位制:0000 0000 0000 0000 0000 0000 0000 0010
5,轉成十進位制就是:2
python運算子 之位運算子
支援的資料型別有數字 集合 set 僅支援 交集 並集 不同集 其他型別都不支援位運算。按位運算子是把數字看作二進位制來計算的。位運算子作用於所有的位上,並且按位運算。python中按位運算法則如下 假設a 60,b 13 操作符描述例項 按位與運算子,當且僅當兩個運算元的某一位都非0時,該位的結果...
位運算子,「,」逗號運算子,
位運算子有 按位與 按位或 按位異或 按位取反 優先順序從高到低,依次為 按位與運算有兩種典型用法,一是取乙個位串資訊的某幾位,如以下 擷取x的最低7位 x 0177。二是讓某變數保留某幾位,其餘位置0,如以下 讓x只保留最低6位 x x 077。按位或運算的典型用法是將乙個位串資訊的某幾位置為1。...
ECMAScript 運算子 位運算子
位運算子是在數字底層 即表示數字的 32 個數字 進行操作的 重溫整數 ecmascript 整數有兩種型別,即有符號整數 允許用正數和負數 和無符號整數 只允許用正數 在 ecmascript 中,所有整數字面量預設都是有符號整數,這意味著什麼呢?有符號整數使用 31 位表示整數的數值,用第 32...