亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java位掩碼控制權限與(&)或(|)非(~)、>的介紹

2024-07-14 08:43:37
字體:
來源:轉載
供稿:網友

1. java 位掩碼

java 位掩碼,在java開發中很少有場景會用到掩碼,但是當系統中需要判斷某個對象是否有 某些權限時,可以通過位掩碼來做。

位掩碼 主要通過位運算,例如與(&)、非(~)、或(|)、異或(^)、移位(<<和>>)等來實現 權限判斷功能。

1.1 簡單介紹一下位運算符(計算均為二進制計算)

  • << : 左移運算符,num << 1,相當于num乘以2
  • >> : 右移運算符,num >> 1,相當于num除以2
  • >>> : 無符號右移,忽略符號位,空位都以0補齊
  • 異或(^ ): 一句話,相異為真 返回 boolean
  • 與(&): 只有兩位都為 1 則為真 ,0001 & 0101 也就是 0001
  • 或(|): 只要兩位有一位 為真則為真, 0001 | 0100,也就是0101
  • 非(~): 對自身取反。

    注意 非運算比較特殊 引用網上大神的解釋(如果看不懂就去翻翻計算機組成原理)在Java中,所有數據的表示方法都是以補碼的形式表示,如果沒有特殊說明,Java中的數據類型默認是int,int數據類型的長度是8位,一位是四個字節,就是32字節,32bit.
    比如:~37
    37 轉為二進制是100101

    補碼后為: 00000000 00000000 00000000 00100101
    取反為:   11111111 11111111 11111111 11011010

    因為高位是1,所以原碼為負數,負數的補碼是其絕對值的原碼取反,末尾再加1。
    因此,我們可將這個二進制數的補碼進行還原: 首先,末尾減1得反碼:11111111 11111111 11111111 11011001 其次,將各位取反得原碼:
00000000 00000000 00000000 00100110,此時二進制轉原碼為38
    所以~37 = -38.

2. 位掩碼控制權限

假設 在一個系統中,用戶有查詢(Select)、新增(Insert)、修改(Update)、刪除(Selete)四種權限使用掩碼 來控制和判斷這些權限。

代碼實現:

package com.us.basics;/** * Created by yangyibo on 17/12/11. * 使用位掩碼的方式,只需要用一個大于或等于0且小于16的整數即可表示所有的16種權限的狀態。 */public class BitMask {  public static int ADD = 1 << 0; //1*2的0次方 的二進制 0001  public static int DELETE = 1 << 1; //1*2的1次方 的二進制 0010  public static int UPDATE = 1 << 2; //1*2的2次方 的二進制 0100  public static int SELECT = 1 << 3; //1*2的3次方 的二進制 1000  // 當前狀態  private int currentStatus;  BitMask(int currentStatus) {    this.currentStatus = currentStatus;  }  /**   * 添加某個操作權限 通過或操作實現   * @param more   * @return   */  private BitMask append(int more) {    currentStatus = currentStatus | more;    return this;  }  /**   * 除去某個操作權限 通過非操作 和 與操作共同實現   * @param more   * @return   */  private BitMask delete(int more) {    // 如果非操作不好理解,可以理解為 減(-)操作也是可以的    // currentStatus = currentStatus - more;    currentStatus &= ~more;    return this;  }  /**   * 是否擁有某個權限 通過與運算判斷   * @param more   * @return   */  private boolean isPermission(int more) {    return (currentStatus & more) > 0 ;  }  public static void main(String[] args) {    BitMask bk = new BitMask(BitMask.DELETE);    //添加權限    bk.append(BitMask.ADD).append(BitMask.UPDATE);    bk.delete(BitMask.ADD);    // 判斷是否有 ADD 操作權限    System.out.println(bk.isPermission(BitMask.ADD));    test1();  }  /**   * 測試與   */  public static void test1() {    int a =5; //0101    int b =6; //0110    System.out.println(a&b); //輸出為 0100 為 4  }  /**   * 測試或   */  public static void test2() {    int a =5; //0101    int b =6; //0110    System.out.println(a|b); // 輸出為 0111 為 7  }  /**   * 測試非 可以理解為從 a 中減去 b   * ~5 取 5的補碼,正數的補碼 0101 ,為絕對值,其余位補零。然后取反 1010 ,最高位為 1 則為負數,然后取其補碼,負數的補碼是其絕對值的原碼取反 0101 ,然后末尾+1 0110 所以為-6   * 非操作比較繞,可以理解為絕對值+1 并取負數   */  public static void test3() {    int a =5; //0101    System.out.println(~a); // 輸出為 -6  }}

本文源代碼:

https://github.com/527515025/JavaTest/blob/master/src/main/java/com/us/basics/BitMask.java

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美自拍一区| 91久久久久久久久久久久久| 97国产精品视频| 性夜试看影院91社区| 国产精品久久久亚洲| 中文字幕日韩在线视频| 久久精品电影网| 国产91精品青草社区| 欧美午夜片欧美片在线观看| 国产91av在线| 一区二区三区 在线观看视| 欧美在线激情视频| 久久99久久亚洲国产| 国产精品久久久久久久久久久久| 亚洲欧洲xxxx| 欧美中文字幕在线观看| 欧美夫妻性生活xx| 国产美女精品视频| 亚洲精品98久久久久久中文字幕| 中文字幕日韩精品在线观看| 亚洲色图狂野欧美| 国模视频一区二区| 国产亚洲精品久久久久久| 精品国内亚洲在观看18黄| 亚洲一级片在线看| 91精品国产综合久久久久久久久| 91久久精品在线| 中文字幕日韩精品有码视频| 国产裸体写真av一区二区| 亚洲第一国产精品| 91久久久在线| 国产精品美乳一区二区免费| 欧洲美女免费图片一区| 国产精品视频免费在线| 丁香五六月婷婷久久激情| 日韩av电影在线免费播放| 亚洲国产成人久久| 亚洲成avwww人| 欧洲日韩成人av| 久久亚洲综合国产精品99麻豆精品福利| 国产日韩欧美视频| 亚洲自拍偷拍在线| 久久视频中文字幕| 91精品视频免费| 亚洲人成自拍网站| 亚洲深夜福利在线| 日韩中文字幕亚洲| 久久韩国免费视频| 欧美精品www| 69视频在线免费观看| 久久久久这里只有精品| 久久夜色精品国产亚洲aⅴ| 欧美激情小视频| 欧美福利视频在线观看| 欧美激情一区二区三区在线视频观看| 久久中文字幕在线| 国产精品xxxxx| 欧美情侣性视频| 亚洲精品少妇网址| 精品久久久视频| 亚洲一区av在线播放| 亚洲国产精品va在线看黑人| 国产精品中文字幕在线| 亚洲国产欧美日韩精品| 国产一区二区三区久久精品| 日韩电影中文字幕av| 日本久久亚洲电影| 大荫蒂欧美视频另类xxxx| 最近中文字幕2019免费| 萌白酱国产一区二区| 欧美专区在线播放| 欧美一区二区色| 在线中文字幕日韩| 久久精品国产69国产精品亚洲| 欧美一级淫片aaaaaaa视频| 精品偷拍各种wc美女嘘嘘| 久久视频精品在线| 国产香蕉一区二区三区在线视频| 精品中文字幕在线| 欧美性资源免费| 777777777亚洲妇女| 欧美福利视频在线| 亚洲欧美另类自拍| 91黑丝高跟在线| 亚洲xxx大片| 精品国产一区二区在线| 2025国产精品视频| 国产精品无码专区在线观看| 日本一区二区在线播放| 亚洲精品按摩视频| 亚洲视频欧洲视频| 欧美日韩美女视频| 欧美精品在线网站| 国产精品美女网站| 国产精品成人va在线观看| 日韩禁在线播放| 国产视频在线观看一区二区| 九色精品免费永久在线| 日韩有码视频在线| 亚洲精品国产精品国自产观看浪潮| 日韩中文字幕国产精品| 一区二区三区视频免费在线观看| www.国产精品一二区| 狠狠躁夜夜躁人人爽天天天天97| 成人免费网站在线看| 精品欧美国产一区二区三区| 国产精品久久二区| 国产精品久久久久久久久久久不卡| 欧美成人四级hd版| www.99久久热国产日韩欧美.com| 欧美激情一区二区三区成人| 色综合影院在线| 欧美激情一二三| 日本人成精品视频在线| 一区二区三区四区精品| 欧美性猛交xxxx乱大交蜜桃| 97精品国产97久久久久久| 精品日本高清在线播放| 欧美日韩在线视频一区| 在线看国产精品| 日韩av免费在线看| 黑人欧美xxxx| 日韩精品极品在线观看播放免费视频| 色综合老司机第九色激情| 日韩精品久久久久久久玫瑰园| 亚洲国产精彩中文乱码av| 日韩久久午夜影院| 色哟哟入口国产精品| 88国产精品欧美一区二区三区| 国产一区二区丝袜高跟鞋图片| 国产专区欧美专区| 国产精品video| 国产精品亚洲综合天堂夜夜| 亚洲精品99久久久久| 91国产视频在线| 日产精品99久久久久久| 久热精品视频在线观看一区| 亚洲欧洲在线播放| 亚洲欧美激情一区| 成人久久一区二区三区| 国产一区二区在线免费视频| 欧美成人激情视频免费观看| 中文字幕国产精品久久| 精品久久久久久久久久久久久| 国产精品久久久久久久久久新婚| 亚洲欧美日韩另类| 精品视频—区二区三区免费| 97人人爽人人喊人人模波多| 欧美日韩免费看| 欧美福利视频网站| 亚洲免费电影在线观看| 亚洲国产欧美一区二区三区久久| 亚洲日本中文字幕| 一本一道久久a久久精品逆3p| 欧美精品18videosex性欧美| 国产美女扒开尿口久久久| 日韩激情av在线免费观看| 亚洲第一区中文字幕| 啊v视频在线一区二区三区| 福利一区福利二区微拍刺激| 成人av番号网| 欧美成人性生活| 欧美疯狂做受xxxx高潮| 韩国精品久久久999|