JavaShuo
欄目
標籤
Java中有趣的移位操做!完全弄懂各個移位操做符的使用方式
時間 2021-08-13
標籤
java
markdown
spa
code
orm
table
class
import
欄目
Java
简体版
原文
原文鏈接
<<
<<:
左移運算,左移幾位就補幾個
0
>>
>>:
右移運算,爲算術右移
若是數字爲正數時,移位後在前面補
0
若是數字爲負數時,移位後在前面補
1
>>>
>>>:
無符號右移,爲邏輯右移.忽略符號,空位補0
無符號右移規則:
忽略了符號位擴展,0補最高位,無符號右移運算符
>>>
只對
32
位和
64
位值有意義
若是要移位的數是正數時:
右移和無符號右移的值是同樣的
若是要移位的數是負數時:
右移後的值仍是負數
無符號右移後的值則爲正數
區別:
對於正數而言
,>>
和
>>>
沒有區別
對於負數而言,因爲無符號右移忽略了最高位數的符號位.因此:
-2 >>> 1 = 2147483647(Integer.MAX_VALUE)
-1 >>> 1 = 2147483647(Integer.MAX_VALUE)
所以要判斷兩個
Integer
類型的數符號是否相同,能夠這樣判斷:
return
((a >>
31
) ^ (b >>
31
)) ==
0
;
複製代碼
移位運算結果
在不大於自身數值類型最大位數的移位時,一個數左移
n
位,就是將這個數乘以
2
的
n
次冪
一個數右移
n
位,就是將這個數除以
2
的
n
次冪,而後取整
若是
移動位數
超出
自身數值類型的最大位數,
只要將
移位數
和
自身數值類型的最大位數取餘
獲得的
數字
套用方法便可
注意
三種移位運算做用的左操做數有五種:
long
int
short
byte
char
在做用不一樣的操做數類型時的具體操做過程不一樣,遵循如下原則:
int
移位時, 左操做數是
32
位,此時移位符號做用在
32
位
bit
上
好比:
1 >> 3,是將00000000 00000000 00000000 00000001這32位向右移動3位
long
移位時,左操做數是
64
位,此時移位符號做用在
64
位
bit
上
short,byte,char
在移位以前首先將數據轉換爲
int,
而後再移位,此時移位符號做用在
32
位
bit
上
好比:
(byte)0xff >>> 7,是將11111111 11111111 11111111 11111111這32位向右移動7位,獲得的結果是00000001 11111111 11111111 11111111
由上可知:
當左操做數爲
long
時,移位以後獲得的類型是
long
當左操做數是其它四種類型時,移位以後獲得的類型時
int
因此當左操做數是
short,byte,char
時,使用
>>=, >>>=, <<= .
實際上是將獲得的
int
作低位截取獲得的數值,獲得的值每每會錯
三種移位符號除了對左操做數有操做規則外,對右操做數也有操做規則:
若是左操做數是
int
或者轉換以後是
int,
那麼右操做數只有低
5
位有效,由於int總共就
32
位
22 >> 33 與 22 >> 1 的結果是同樣的,都是11
若是左操做數是
long,
那麼右操做數只有低
6
位有效
相關文章
1.
移位操做符
2.
Java移位操做
3.
java基礎-位操做符與位移操做符
4.
javascripte 中的移位操做符
5.
認識位移操做符
6.
c語言中的位移位操做
7.
高級操做符——位操做符講解(移位操做符~ 按位與'&'操做符~ 按位或'|'操做符~ 按位異或'^'操做符)
8.
移位操做的疑問
9.
JavaScript中的位操做符
10.
【譯】JavaScript中按位操做符的有趣應用
更多相關文章...
•
Java 中操作 R
-
R 語言教程
•
PHP 7 移除的擴展
-
PHP 7 新特性
•
常用的分佈式事務解決方案
•
C# 中 foreach 遍歷的用法
相關標籤/搜索
位移
移位
做操
操做
java神操做
各位
操做系統
Update誤操做
Linux操做
異步操做
Java
Markdown
Docker教程
Docker命令大全
Spring教程
java
應用
註冊中心
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
子類對象實例化全過程
2.
【Unity2DMobileGame_PirateBomb09】—— 設置基本敵人
3.
SSIS安裝以及安裝好找不到商業智能各種坑
4.
關於 win10 安裝好的字體爲什麼不能用 WebStrom找不到自己的字體 IDE找不到自己字體 vs找不到自己字體 等問題
5.
2019版本mac電腦pr安裝教程
6.
使用JacpFX和JavaFX2構建富客戶端
7.
MySQL用戶管理
8.
Unity區域光(Area Light) 看不見光線
9.
Java對象定位
10.
2019-9-2-用自動機的思想說明光速
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
移位操做符
2.
Java移位操做
3.
java基礎-位操做符與位移操做符
4.
javascripte 中的移位操做符
5.
認識位移操做符
6.
c語言中的位移位操做
7.
高級操做符——位操做符講解(移位操做符~ 按位與'&'操做符~ 按位或'|'操做符~ 按位異或'^'操做符)
8.
移位操做的疑問
9.
JavaScript中的位操做符
10.
【譯】JavaScript中按位操做符的有趣應用
>>更多相關文章<<