欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

千鋒扣丁學(xué)堂Java培訓(xùn)之移位符的具體使用

2019-07-22 13:43:11 3539瀏覽

今天千鋒扣丁學(xué)堂Java培訓(xùn)老師給大家分享一篇關(guān)于java移位符的具體使用,文中通過示例代碼介紹的非常詳細(xì),下面我們一起來看一下吧。



概述

java移位符主要包括3種:


這里我們先附上代碼運(yùn)行實(shí)例,原理將在后面以解析下面代碼的方式進(jìn)行講解:

public class BitOperatorTest {
 public static void main(String[] args){
  System.out.println(1 << 4);
  System.out.println(-1 << 3);
  System.out.println(8 >> 3);
  System.out.println(-8 >> 3);
  System.out.println(-8 >>> 3);
 }
}

結(jié)果如下:

16
-8
1
-1
536870911

首先我們需要清楚在計(jì)算機(jī)系統(tǒng)中,數(shù)值一般用補(bǔ)碼來表示,主要原因是因?yàn)槭褂醚a(bǔ)碼可以使符號(hào)位和其他位統(tǒng)一處理,我們需要將上面的數(shù)值都轉(zhuǎn)化為補(bǔ)碼。

左移運(yùn)算符

1<<4

首先我們將1化為源碼:0000 0000 0000 0000 0000 0000 0000 0001(因?yàn)槠涫莍nt類型,所以化為二進(jìn)制有32位)

正數(shù)的補(bǔ)碼和反碼等于源碼的本身。所以補(bǔ)碼也為上述二進(jìn)制代碼。

左移運(yùn)算符是將操作數(shù)的二進(jìn)制碼整理左移指定位數(shù),左移后右面空出的位用0來補(bǔ)充。

左移4位  0000 0000 0000 0000 0000 0000 0000 0001 1*2^0=1 

<font color=red>0000</font> 0000 0000 0000 0000 0000 0000 0001 <font color=blue>0000</font> (紅色被移除截?cái)?,藍(lán)色是新補(bǔ)的0) 1*2^4=16

-1<<3

我們開始第二個(gè)輸出語句,這是一個(gè)負(fù)數(shù)。負(fù)數(shù)的反碼是他的源碼符號(hào)位不變,其余按位取反。補(bǔ)碼是他的反碼加一。

所以我們可以得到-1的源碼為1000 0000 0000 0000 0000 0000 0000 0001 -1*2^0=-1 

反碼為1111 1111 1111 1111 1111 1111 1111 1110

 

補(bǔ)碼為1111 1111 1111 1111 1111 1111 1111 1111 

對(duì)補(bǔ)碼進(jìn)行操作得<font color=red>111</font> 1111 1111 1111 1111 1111 1111 1111 1<font color=blue>000</font> (紅色被移除截?cái)啵{(lán)色是新補(bǔ)的0) 

將結(jié)果數(shù)轉(zhuǎn)化為源碼得1000 0000 0000 0000 0000 0000 0000 1000 -1*2^3=-8

總結(jié)

所以通過上面對(duì)左移運(yùn)算符的簡(jiǎn)單使用不難發(fā)現(xiàn),我們可以將其簡(jiǎn)便理解為移動(dòng)幾位,就是為操作數(shù)乘以2的幾次方。

右移運(yùn)算符

左移運(yùn)算符不牽扯符號(hào)位的增補(bǔ)符號(hào)位,所以沒有有無符號(hào)分類

有符號(hào)右移運(yùn)算符

8>>3

根據(jù)上面流程,我這里直接就簡(jiǎn)化為

???源碼為:0000 0000 0000 0000 0000 0000 0000 1000 1*2^3=8 
???反碼為:0000 0000 0000 0000 0000 0000 0000 1000 
???補(bǔ)碼為:0000 0000 0000 0000 0000 0000 0000 1000 

運(yùn)算后結(jié)果:<font color=blue>000</font>0 0000 0000 0000 0000 0000 0000 0001 <font color=red>000</font> 1*2^0=1(紅色被移除截?cái)?,藍(lán)色是新補(bǔ)的符號(hào)位,并且以原來的符號(hào)位填補(bǔ))

-8>>3

根據(jù)上面流程,我這里直接就簡(jiǎn)化為

???源碼為:1000 0000 0000 0000 0000 0000 0000 1000 -1*2^3=8 
???反碼為:1111 1111 1111 1111 1111 1111 1111 0111 
???補(bǔ)碼為:1111 1111 1111 1111 1111 1111 1111 1000 

運(yùn)算后結(jié)果:<font color=blue>111</font>1 1111 1111 1111 1111 1111 1111 1111 <font color=red>000</font> (紅色被移除截?cái)?,藍(lán)色是新補(bǔ)的符號(hào)位,并且以原來的符號(hào)位填補(bǔ)) 

轉(zhuǎn)換為源碼為:1000 0000 0000 0000 0000 0000 0000 0001 -1*2^0=-1

總結(jié)

同左移運(yùn)算符一樣,總結(jié)規(guī)律后可得出,右移運(yùn)算符移動(dòng)幾位則是對(duì)操作數(shù)除以2的多少次方。

無符號(hào)右移運(yùn)算符

-8>>>3

根據(jù)上面流程,我這里直接就簡(jiǎn)化為

???源碼為:1000 0000 0000 0000 0000 0000 0000 1000 -1*2^3=8 
???反碼為:1111 1111 1111 1111 1111 1111 1111 0111 
???補(bǔ)碼為:1111 1111 1111 1111 1111 1111 1111 1000 

運(yùn)算后結(jié)果:<font color=yellow>000</font>1 1111 1111 1111 1111 1111 1111 1111 <font color=red>000</font> (紅色被移除截?cái)?,注意黃色部分,在無符號(hào)右移運(yùn)算位中統(tǒng)一補(bǔ)0) 

此時(shí)數(shù)值將會(huì)非常大,所以得到程序中的結(jié)果。

補(bǔ)充

如果操作類型低于int類型,比如byte,char等,先將其轉(zhuǎn)化為int類型在進(jìn)行移位。

對(duì)于int類型的移位,如果移動(dòng)位數(shù)超過32位,則讓位數(shù)對(duì)32取余,然后進(jìn)行運(yùn)行,即a>>33==a>>1a>>32==a

同樣如果對(duì)于long類型的移位,移動(dòng)位數(shù)超過64,則也需要對(duì)移動(dòng)位數(shù)進(jìn)行處理。

代碼補(bǔ)充

對(duì)于補(bǔ)充內(nèi)容的代碼不進(jìn)行詳解,代碼及運(yùn)算結(jié)果如下,基本流程與上面類似,

代碼:

public class BitOperatorTest {
 public static void main(String[] args){
  System.out.println((char)4 << 4);
  System.out.println(4 << 4);
  System.out.println(4 << 36);
  System.out.println((long)1214 >> 66);
  System.out.println((long)1214 >> 2);
 }
}

運(yùn)行結(jié)果:

64
64
64
303
303

以上就是關(guān)于千鋒扣丁學(xué)堂Java培訓(xùn)之移位符的具體使用的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,想要了解更多關(guān)于Java大數(shù)據(jù)方面內(nèi)容的小伙伴,請(qǐng)關(guān)注扣丁學(xué)堂Java大數(shù)據(jù)培訓(xùn)官網(wǎng)、微信等平臺(tái),扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺(tái)為您提供權(quán)威的Java開發(fā)視頻,Java培訓(xùn)后的前景無限,行業(yè)薪資和未來的發(fā)展會(huì)越來越好的,扣丁學(xué)堂老師精心推出的Java視頻教程定能讓你快速掌握J(rèn)ava從入門到精通開發(fā)實(shí)戰(zhàn)技能??鄱W(xué)堂Java技術(shù)交流群:850353792。


                        JavaEE/微服務(wù)/源碼解析/分布式/企業(yè)級(jí)架構(gòu)【VIP體驗(yàn)課】


     【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】       【掃碼進(jìn)入JavaEE/微服務(wù)VIP免費(fèi)公開課】  



查看更多關(guān)于“Java開發(fā)資訊”的相關(guān)文章>>

標(biāo)簽: Java培訓(xùn) Java視頻教程 Java多線程 Java面試題 Java學(xué)習(xí)視頻 springBoot項(xiàng)目

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國(guó)免費(fèi)咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號(hào)中關(guān)村智誠(chéng)科創(chuàng)大廈4層
京ICP備2021002079號(hào)-2   Copyright ? 2017 - 2022
返回頂部 返回頂部