二进制位运算 左移与右移
(1).二進(jìn)制中負(fù)數(shù)的計(jì)算
負(fù)數(shù)以正數(shù)的補(bǔ)碼表示
原碼:一個(gè)整數(shù)按照絕對(duì)值的大小轉(zhuǎn)化成二進(jìn)制的數(shù)
反碼:將二進(jìn)制數(shù)按位取反
補(bǔ)碼:反碼加 1
以-14 舉例
原碼:14 即 00000000 00000000 00000000 00001110
反碼: 11111111 11111111 11111111 11110001
補(bǔ)碼: 11111111 11111111 11111111 11110010
所以-14 的二進(jìn)制是 11111111 11111111 11111111 11110010
假設(shè) 我們得到 二進(jìn)制讓我們求整數(shù) 就是倒著來取相反數(shù)
如二進(jìn)制是 11111111 11111111 11111111 11110010
得到反碼減1 11111111 11111111 11111111 11110001
原碼: 00000000 00000000 00000000 00001110
即 1110 = 14 所以取反 就是-14
(2).<<左移運(yùn)算符
1.將一個(gè)運(yùn)算對(duì)象的各二進(jìn)制位全部左移若干位(左邊的二進(jìn)制丟棄,右邊補(bǔ)0)
(注意:java中 整數(shù)位 32位)
11 << 2 = 44
-14 <<2 =-56
-14的二進(jìn)制(11111111 11111111 11111111 11110010)左移2位 為
11111111 11111111 11111111 11001000 結(jié)果為(-56)
【補(bǔ)充】:對(duì)于左移,直觀的理解為,對(duì)于正數(shù)來說,左移相當(dāng)于乘以2(但效率比乘法高);對(duì)于負(fù)數(shù)來說,沒有直觀的理解。
(3).>>右移運(yùn)算符
將一個(gè)運(yùn)算對(duì)象的各二進(jìn)制位全部右移若干位,正數(shù)左補(bǔ)0,負(fù)數(shù)左補(bǔ)1.
4 >> 2 = 1;
-14 >> 2 = -4;
【補(bǔ)充】:對(duì)于右移,直觀的理解為,對(duì)于正數(shù)來說,右1移相當(dāng)于除以2(但效率比除法高);對(duì)于負(fù)數(shù)來說,沒有直觀的理解。
作者:Ferrari1001
鏈接:https://www.jianshu.com/p/19ed5ff6a945
來源:簡(jiǎn)書
?
總結(jié)
以上是生活随笔為你收集整理的二进制位运算 左移与右移的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不写一行代码,也能解释XML,因为是JA
- 下一篇: 服务注册eureka上显示ip地址出现的