美文网首页
位运算的基本使用

位运算的基本使用

作者: 策马踏清风 | 来源:发表于2020-08-11 19:02 被阅读0次

    看源码时经常能看到一些位运算的操作,这里列举几种常见的用法。

    乘除

    1. 2^n
    public static void main(String[] args) {
            int val = 461637107;
            int res1 = val / 16;
            int res2 = val >> 4;
            System.out.println("res1 = " + res1);// res1 = 28852319
            System.out.println("res2 = " + res2);// res2 = 28852319
        }
    
    1. 2^n
        public static void main(String[] args) {
            int val = 134563;
            int res1 = val * 16;
            int res2 = val << 4;
            System.out.println("res1 = " + res1);// res1 = 2153008
            System.out.println("res2 = " + res2);// res2 = 2153008
        }
    

    取模

        public static void main(String[] args) {
            int val = 461637107;
            int res1 = val % 32;
            int res2 = val & 0x1F;// 31的16进制,即5个1。
            System.out.println("res1 = " + res1);//res1 = 19
            System.out.println("res2 = " + res2);//es2 = 19
        }
    

    设置具体bit位的数据为1

        public static void main(String[] args) {
            DecimalFormat df = new DecimalFormat("00000000");
            int oldVal = 5;
            int n = 3;
            int newVal = oldVal | 1 << n;
            // 得到的数据
            System.out.println(oldVal); // 5
            // 输出二进制
            System.out.println(df.format(Integer.valueOf(Integer.toString(oldVal, 2))));//00000101
            System.out.println(df.format(Integer.valueOf(Integer.toString(newVal, 2))));//00001101
        }
    

    设为0同样思路

    获取二进制第n个位置上的值

    public static void main(String[] args) {
            int n = 0;
            String val = "00001101";
            Integer valInt = Integer.valueOf(val, 2);
            boolean res = (valInt & 1 << n) != 0;
            System.out.println(res ? "1" : "0");//1
        }
    

    基本运算符

    1.&(按位与运算) 只要有一个为0,就为0,如 0001 & 0100 结果为 0000

    1. |(按位或运算) 只要有一个为1,就为1,如 0001 & 0100 结果为 0101
    2. ~(取反运算) 这个只对一个数据进行操作,0取反为1,1取反为0;
    3. ^ (按位异或运算) 不同为1,相同为0, 如 0001 ^ 0100 结果为 0101

    相关文章

      网友评论

          本文标题:位运算的基本使用

          本文链接:https://www.haomeiwen.com/subject/ayiydktx.html