常见位操作:获取,设置,清零
生活随笔
收集整理的這篇文章主要介紹了
常见位操作:获取,设置,清零
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 /*常見位操作:獲取,設置,清零
2 *
3 * */
4 public class BitGet {
5 /*
6 * 該函數實現獲取功能
7 * 先將1左移動i位,左移動0位變成了00000001,
8 * 然后再和Num十進制12轉化為二進制00001100進行&運算,
9 * 00000001 如果是左移動兩位就為 00000100
10 * 00001100 00001100
11 * -------- --------
12 * 00000000 00000100
13 * 從而將第i位除外的所有位清零,最后,檢查該結果是不是為零
14 * 不為零則說明第i位為1,否則就是零
15 * */
16 public boolean getBit(int num,int i)
17 {
18 return ((num&(1<<i))!=0);
19 }
20 /*該函數實現置位功能
21 * 先將1左移動i位,得到形如00001000的值,接著,對這個值和Num進行位或運算
22 * 這樣只會改變第i位的值,不會影響Num其他位
23 * 如下
24 * 12的二進制碼為00001100
25 * 如果把第1個位進行置位得到
26 * 00001100
27 * 00000010
28 * --------
29 * 00001110
30 * 就是把第二位置為1,其他的都不變
31 * */
32 public int setBit(int num,int i)
33 {
34 return num|(1<<i);
35 }
36 /*
37 * 該函數實現清零功能
38 * 該方法與setBit剛好相反,首先,將1向左移動i位,然后對這個值取反得到其掩碼
39 * 接著,對該掩碼和Num執行位與運算,這樣只會清零num的i位,其余位則保持不變
40 * 如下
41 * 12的二進制為00001100
42 * 假設要清零第3位 則有
43 * 1.將1向左移動3位得 00001000
44 * 2.取反 得11110111
45 * 3.進行位與運算
46 * 11110111
47 * 00001100
48 * --------
49 * 00000100
50 * 可以得出只是對第三位清零,其他保持不變
51 * */
52 public int clearBit(int num,int i)
53 {
54 int mask=~(1<<i);
55 return num &mask;
56 }
57 public static void main(String[] args) {
58 // TODO Auto-generated method stub
59 BitGet bg = new BitGet();
60 boolean flag=bg.getBit(12, 3);
61 System.out.println(flag);
62 int value = bg.setBit(12, 1);
63 System.out.println("置位第1位為:"+value);
64 value=bg.clearBit(12, 3);
65 System.out.println("清零第3位為:"+value);
66
67 }
68
69 }
?
轉載于:https://www.cnblogs.com/luoweiKnowledge/p/3960715.html
總結
以上是生活随笔為你收集整理的常见位操作:获取,设置,清零的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring里的controller之间
- 下一篇: 微信公众号是html页面吗,微信公众号网