亚洲 国产精品 日韩-亚洲 激情-亚洲 欧美 91-亚洲 欧美 成人日韩-青青青草视频在线观看-青青青草影院

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Java中位運算符

Java中位運算符

來源:千鋒教育
發布人:qyf
時間: 2022-06-07 15:46:00 1654587960

  日常開發中位運算不是很常用,但是巧妙的使用位運算可以大量減少運行開銷,優化算法。舉個例子,翻轉操作比較常見,比如初始值為1,操作一次變為0,再操作一次變為1。可能的做法是使用三木運算符,判斷原始值為1還是0,如果是1,設置為0,否則設置為0.但是使用位運算,不用判斷原始值,直接改變值就可以:

  1^num//num為原始值

  當然,一條語句可能對代碼沒什么影響,但是在高重復,大數據量的情況下將會節省很多開銷。

  以下是自己整理的關于java位運算的部分內容,如有錯誤,還請指出,以共同進步,先行致謝。

  1. 位運算符

  java支持的位運算符:

  &:按位與。

  |:按位或。

  ~:按位非。

  ^:按位異或。

  <<:左位移運算符。

  >>:右位移運算符。

  <<<:無符號右移運算符。

  位運 算 符 中 ,除 ~ 以 外 ,其余 均 為 二元運算符,操作數只能為整型和字符型數據 。

  Java使用補碼來表示二進制數 ,在補碼表示中,最高 位 為符號位 ,正數的符號位為 0,負數 為 1。補碼的規定如下 :

  對 正 數 來 說 ,最高位為 0,其余 各 位 代 表 數 值 本 身 (以二 進制 表 示 ),如 +42的補碼 為 00101010。

  對負數而言,把該 數 絕 對 值 的 補 碼 按 位 取 反 ,然后 對 整 個數 加 1,即得 該 數的 補 碼 。 如 -1的補 碼 為11111111111111111111111111111111(00000000000000000000000000000001按 位 取 反 11111111111111111111111111111110+1=11111111111111111111111111111111 )。為何有那么多0、1,java中int是32位的。

  按位與(&)

  按位與的運算規則

00

  規則總結:只有兩個操作數對應位同為1時,結果為1,其余全為0. (或者是只要有一個操作數為0,結果就為0)。舉例如下:

01

02

03

  按位或(|)

  按位或的運算規則

04

  規則總結:只有兩個操作數對應位同為0時,結果為0,其余全為1.(或者是只要有一個操作數為1,結果就為1)。

  按位非(~)

  按位非的運算規則

05

  在求負數的源碼中使用過。

  按位異或(^)

  按位異或的運算規則

06

  規則總結:異:1.

  左位移(<<)

  算術右移(>>): 符號位不變,低位補0。如:2<<2結果為8。

07

  當移動的位數超過數字本身的位數時,那么不就都需要補0操作,實際上不是的,java不可能做那么浪費資源的事情。在真正執行位移前,其對要移動的位數做了一些預處理,比如32處理為0,-1處理為31.

  右位移(>>)

  低位溢出,符號位不變,并用符號位補溢出的高位。如:-6>>2結果為-2。

08

  無符號右移(>>>)

  低位溢出,高位補0。注意,無符號右移(>>>)中的符號位(最高位)也跟著變,無符號的意思是將符號位當作數字位看待。如:-1>>>1結果為2147483647。這個數字應該比較熟悉,看兩個輸出語句就知道是什么了:

  System.out.println(Integer.toBinaryString(-1>>>1));

  System.out.println(Integer.toBinaryString(Integer.MAX_VALUE));

  輸出結果為:

  1111111111111111111111111111111

  1111111111111111111111111111111

  -1>>>1竟然得到了int所能表示的最大整數,精彩。

09

  除了使用-1>>>1能得到Integer.MAX_VALUE,以下的也能得到同樣的結果:

        //maxInt

        System.out.println(~(1 << 31));

        System.out.println((1 << -1)-1);

        System.out.println(~(1 << -1));

  使用位運算往往能很巧妙的實現某些算法完成一些復雜的功能。

  常見使用

  1. m*2^n

  可以使用m<<n求得結果,如:< p="">

  System.out.println("2^3=" + (1<<3));//2^3=8

  System.out.println("3*2^3=" + (3<<3));//3*2^3=24

  計算結果是不是很正確呢?如果非要說2<<-1為什么不等于0.5,前面說過,位運算的操作數只能是整型和字符型。在求int所能表示的最小值時,可以使用

  //minInt

  System.out.println(1 << 31);

  System.out.println(1 << -1);

  可以發現左移31位和-1位所得的結果是一樣的,同理,左移30位和左移-2所得的結果也是一樣的。移動一個負數位,是不是等同于右移該負數的絕對值位呢?輸出一下就能發現不是的。java中int所能表示的最大數值是31位,加上符號位共32位。在這里可以有這樣的位移法則:

  法則一:任何數左移(右移)32的倍數位等于該數本身。

  法則二:在位移運算m<<n的計算中,若n為正數,則實際移動的位數為n%32,若n為負數,則實際移動的位數為(32+n%32),右移,同理。< p="">

  左移是乘以2的冪,對應著右移則是除以2的冪。

  2. 判斷一個數n的奇偶性

  n&1 == 1?”奇數”:”偶數”

  為什么與1能判斷奇偶?所謂的二進制就是滿2進1,那么好了,偶數的最低位肯定是0(恰好滿2,對不對?),同理,奇數的最低位肯定是1.int類型的1,前31位都是0,無論是1&0還是0&0結果都是0,那么有區別的就是1的最低位上的1了,若n的二進制最低位是1(奇數)與上1,結果為1,反則結果為0.

  3. 不用臨時變量交換兩個數

  在int[]數組首尾互換中,是不看到過這樣的代碼:

public static int[] reverse(int[] nums){

int i = 0;

int j = nums.length-1;

while(j>i){

nums[i]= nums[i]^nums[j];

nums[j] = nums[j]^nums[i];

nums[i] = nums[i]^nums[j];

j--;

i++;

}

return nums;

}

  連續三次使用異或,并沒有臨時變量就完成了兩個數字交換,怎么實現的呢?

圖片4

  上面的計算主要遵循了一個計算公式:b^(a^b)=a。

  我們可以對以上公式做如下的推導:

  任何數異或本身結果為0.且有定理a^b=b^a。異或是一個無順序的運算符,則b^a^b=b^b^a,結果為0^a。

  再次列出異或的計算表:

10

  可以發現,異或0具有保持的特點,而異或1具有翻轉的特點。使用這些特點可以進行取數的操作。那么0^a,使用異或0具有保持的特點,最終結果就是a。

  其實java中的異或運算法則完全遵守數學中的計算法則:

  ① a ^ a =0

  ② a ^ b =b ^ a

  ③ a ^b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;

  ④ d = a ^b ^ c 可以推出 a = d ^ b ^ c.

  ⑤ a ^ b ^a = b.

  取絕對值

  (a^(a>>31))-(a>>31)

  先整理一下使用位運算取絕對值的思路:若a為正數,則不變,需要用異或0保持的特點;若a為負數,則其補碼為源碼翻轉每一位后+1,先求其源碼,補碼-1后再翻轉每一位,此時需要使用異或1具有翻轉的特點。

  任何正數右移31后只剩符號位0,最終結果為0,任何負數右移31后也只剩符號位1,溢出的31位截斷,空出的31位補符號位1,最終結果為-1.右移31操作可以取得任何整數的符號位。

  那么綜合上面的步驟,可得到公式。a>>31取得a的符號,若a為正數,a>>31等于0,a^0=a,不變;若a為負數,a>>31等于-1 ,a^-1翻轉每一位.

  更多關于“Java培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓經驗,課程大綱更科學更專業,有針對零基礎的就業班,有針對想提升技術的好程序員班,高品質課程助理你實現java程序員夢想。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
精品无人区无码乱码毛片国产 | 超碰97人人模人人爽人人喊| 国产AV无码区亚洲AV欧美| 国产色无码精品视频免费| 久久久久久国产精品免费无码| 欧美XXXX做受欧美88HD| 日产精品乱码卡一卡2卡三网站 | 久久久久人妻精品一区二区三区| 欧美成性视頻XXXⅩXXX| 天天爽狠狠噜天天噜日日噜| 亚洲女毛多水多21P| CHINESE国产AVVIDE| 国产精品特级毛片一区二区| 久久AV无码AV高潮AV| 秋霞电影院yy2933| 亚洲AV喷水无码XXX| 最新国产精品亚洲| 国产成人亚洲精品无码H| 久久精品无码一区二区WWW| 人妻精品久久无码区 | 日日噜噜夜夜狠狠VA视频| 亚洲AV无码国产精品麻豆天美| 中文字幕AV无码人妻| 国产成人精品A视频免费福利| 久久R热这里只有精品| 日本熟妇人妻XXXXX视频| 亚洲国产成人久久综合一区77| 91精品人妻一区二区三在线| 国产乱妇乱子视频在播放| 毛茸茸BBWBBW中国妓女| 无码精品A∨在线观看中文| 余生请多指教在线观看免费全集| 夫妻之间的100种插秧法| 久久久久久久综合综合狠狠| 少妇高潮惨叫久久久久久电影| 亚洲夜夜欢A∨一区二区三区| 成人免费无码A毛片| 久久精品国产只有精品66| 日日AV拍夜夜添久久免费| 野外做受又硬又粗又大视频√| 高清偷自拍亚洲精品三区| 脔到她哭H粗话H好爽五星视频| 天堂影院一区二区三区四区| 综合 欧美 小说 另类 图| 国产女人精品视频国产灰线| 欧美疯狂性受XXXXX另类 | 国色天香一卡2卡3卡4卡| 人妻熟妇乱又伦精品视频APP | 娇小美女被黑壮汉C到喷水| 欧美最猛黑人XXXⅩ猛男欧| 亚洲精品天天影视综合网| 大地韩国日本HD免费完整| 久久亚洲AV成人无码国产最大| 天天做天天摸天天爽天天爱| 2019午夜福利不卡片在线| 国产午夜无码视频在线观看| 日本理论片YY4800免费| 尤物蜜芽国产成人精品区| 国产内射爽爽大片视频社区在线| 漂亮人妻被中出中文字幕| 亚洲熟妇AV一区二区三区宅男| 国产AV人人夜夜澡人人爽小说| 男人激烈吮乳吃奶毛片| 亚洲精品高清国产一久久| 国产SM调教视频在线观看| 欧美激欧美啪啪片SM| 亚洲色AV无码AV丰满AV| 国产精品午睡沙发系列| 日本乱偷互换人妻中文字幕| 中文字幕一区二区三区精彩视频| 激情综合婷婷丁香五月俺来也 | 逆徒每天都想着欺师犯上 | 久久亚洲精品无码| 亚洲AV永久无码精品无码网站| 东京热人妻系列无码专区| 女人三A级毛片视频| 亚洲伊人久久大香线蕉AV| 国产亚洲欧美日韩剧的剧情介绍| 日韩激情在线小视频观看| 中文字幕无码精品亚洲资源网久久| 黄桃AV无码免费一区二区三区 | 国产精品无码一区二区三区免费| 人人妻人人澡人人爽人人精品图片 | av 无码av 丰满av| 狂躁美女大BBBBBB视频U| 亚洲精品天堂成人片AV在线播放 | 免费无码黄网站在线观看| 亚洲日韩乱码中文无码蜜桃臀| 国产午夜鲁丝片AV无码免费| 太太你也不想你丈夫被开除吧| とらぶるだいありぴーち在线| 奶头被几个流浪汉吃肿了| 一本之道AV不卡精品| 九九久久精品国产免费看小说| 亚洲AⅤ熟女五十路中出| 国产成人a在线看片色欲AV| 色黄啪啪网18以下勿进| 波多野结衣系列18部无码观看A | JAVAPARSER少妇高潮| 蜜臀av一区二区三区人妻| 一级特黄无码毛片av一区二区 | 野花视频大全高清免费| 精品国色天香一卡2卡3卡| 亚洲 都市 校园 激情 另类| 国产精品久久久久久影视| 体验区试看120秒十八禁| 父母儿女一家换着玩的文案| 日韩乱码人妻无码中文视频| 插插射啊爱视频日A级| 人人妻人人狠人人爽| 波多野无码中文字幕AV专区| 人妻在线一区二区| 被CAO的奶水直喷高H| 人人妻人人爽人人做夜欢视频九色| CAOPOREN超碰| 人妻丰满熟妇AV无码区动漫| 把人妻日出白浆人妻视频| 人人妻人人澡人人爽| 被老外做的下身都肿了| 日本极品少妇VIDEOSSEX| 超高级国王游戏电影| 日日天干夜夜狠狠爱| 妇女强高潮18ⅩXXX| 天天躁夜夜躁狠狠是什么心态| 国产精品VA尤物在线观看| 无人区码一码二码三码是 | 第九理论午夜电影院| 熟妇人妻av无码一区二区三区| 国产成人AV无码永久免费| 无码专区 人妻系列 在线| 国产综合精品一区二区三区 | 97国产精华最好的产品在线| 欧美〇〇无码黑人大战野结衣| xxxx免费网站| 色欲精品国产一区二区三区AV| 国产成人精品免高潮在线观看| 无线乱码A区B区C区| 韩国激情高潮无遮挡HD| 亚洲日韩电影久久| 乱色精品无码一区二区国产盗| 中文字幕乱码亚洲无线码三区| 欧美大波少妇在厨房被| 成人免费一区二区三区视频软件 | 国产精品久久久爽爽爽麻豆色哟哟| 小妖精太湿太紧了拔不出| 饥渴少妇AV无码影片| 野花影视大全在线观看免费| 免费男人下部进女人下部视频| CHINESE熟妇与小伙子MA| 日本无人区码一码二码三码区别| 国产成人精品亚洲日本语言| 亚洲AV无码不卡在线观看下载| 久久WWW色情成人免费观看| 中文字幕日本人妻久久久免费| 青草青草视频2免费观看| 国产SM主人调教女M视频| 亚洲AV永久无码精品秋霞电影影| 久久久久久国产精品MV| BT天堂网.WWW在线资源| 天天做天天爱天天爽综合网| 狠狠婷婷色五月中文字幕 | 免费真人视频网站直播下载| 成人亚洲A片Ⅴ一区二区小说| 先锋中文字幕在线资源| 精品综合久久久久久888蜜芽| 51爆料网每日爆料黑料| 少妇人妻偷人精品视频| 和教练在车里干了我三次| 中国少妇XXXX做受| 日韩AV一区二区三区| 韩国18禁电影风暴尺度大| 最新国产AV无码专区亚洲AVY| 色爽黄1000部免费软件下载| 国偷自产一区二区免费| 中文字幕AⅤ天堂在线| 色综合视频一区二区三区44| 交换朋友夫妻互换客厅韩国5| 91人妻人人爽人人狠狠| 天天爽天天爽夜夜爽毛片| 久久久久99精品成人品| 成年女人毛片免费视频| 亚洲成AV人片久久| 女人另类牲交ZOZOZO| 国产精品久久一区二区三区 | 女人18毛片A级毛片免费视频| 国产V亚洲V天堂无码久久久| 亚洲熟妇V一区二区三区色堂| 人妻丰满熟妇无码AV| 国精品午夜福利视频不卡 | 欧美婷婷六月丁香综合色| 国产剧情MV天美传媒| 中文乱码人妻一区二区三区视频 | 欧美精产国品一二三类产品| 国产精品人人做人人爽 | 放在里面边顶边吃饭H| 亚洲综合小说区图片区| 十八款夜间禁用APP| 炕上光着腚压在女人身上| 国产粉嫩嫩00在线正在播放| 在线人成视频播放午夜福利|