zoukankan      html  css  js  c++  java
  • Java的位运算

    左移位操作

    
    

    左移位运算的符号为【<<】,左移位运算符左面的操作元称作被移位数,右面的操作数称作移位量。

    左移位运算是双目运算符,操作元必须是整型类型的数据,其移动过程是:【a << n】运算的过程是通过将a的所有位都左移n位,每左移一个位,左边的最高位上的0或1被移出丢弃,并用0填充右边的低位

    注意:

    1. 如果a是byte、short或int型数据,总是先计算出n%32的结果m,然后进行a<<m运算
    2. 对于long型数据,总是先计算出n%64的结果m,然后进行a << m运算
    
    

    右移位操作

    右移位运算的符号为【>>】,右移位运算符左面的操作元称作被移位数,右面的操作数称作移位量。

    右移位运算时双目运算符,操作元必须是整型类型的数据,其移动过程是:【a >> n】运算的过程是通过将a的所有位都右移n位,每右移一个位,右边的最低位上的0或1被移出丢弃,并用0或1填充左边的高位【a是正数时用0填充,负数时用1填充】

    注意:

    1. 如果a是byte、short或int型数据,总是先计算出n%32的结果m,然后进行a<<m运算
    2.  对于long型数据,总是先计算出n%64的结果m,然后进行a << m运算
    /**************************************华丽的分割线性**************************************************/
          以下为常用的比特位操作
    /****************************************************************************************************/
    public class BitUtil {
        
        public static int alterBitValue(int source,int pos,boolean zero) {
            if(zero) { /**source的第pos比特位置为0*/
                return source & Integer.MAX_VALUE ^ (1 << pos -1);
            }
            /**source的第pos比特位置为1*/
            return source | (1 << pos -1);
        }
        
        public static int getBitValue(int source,int pos) {
            /**保留source第pos位的比特值,其余为置为0*/
            source = source & (Integer.MAX_VALUE & (1 << pos -1));
            source = source >> pos -1;
            if(source == 1) 
                return 1;
            return 0;
        }
        
        public static void main(String []args) {
            /**结果应为4*/
            System.out.println(BitUtil.alterBitValue(6, 2, true));
            /**结果应为19*/
            System.out.println(BitUtil.alterBitValue(3, 5, false));
            /**结果应为0*/
            System.out.println(BitUtil.getBitValue(5, 2));
            /**结果应为1*/
            System.out.println(BitUtil.getBitValue(5, 3));
        }
        
    }
  • 相关阅读:
    python的函数修饰符(装饰器)
    hdu1175连连看(dfs+细节)
    hdu2553N皇后问题(dfs,八皇后)
    hdu1045Fire Net(经典dfs)
    hdu1050Moving Tables(贪心)
    hdu2037今年暑假不AC(贪心,活动安排问题)
    hdu1052Tian Ji -- The Horse Racing(贪心,细节多)
    hdu1009FatMouse' Trade(贪心)
    hdu1455Sticks(经典dfs+剪枝)
    hdu2509Be the Winner(反nim博弈)
  • 原文地址:https://www.cnblogs.com/hanfight/p/4060886.html
Copyright © 2011-2022 走看看