JavaSE基础语法—位运算

Wesley13
• 阅读 596

##位运算

public class Test02{
    public static void main(String[] args){
        /**
            位运算:& | ^ << >> >>>
            
            byte b1 = 27;//0001,1011
            byte b2 = 39;//0010,0111
                         //0000,0011         
            //同位比较,两者为1,则为1    
            System.out.println(b1 & b2);//3 - 0000,0000,0000,0000,0000,0000,0000,0011
        
            byte b1 = 27;//0001,1011
            byte b2 = 39;//0010,0111
                         //0011,1111
                         
            //同位比较,两者有1,则为1    
            System.out.println(b1 | b2);//63 - 0000,0000,0000,0000,0000,0000,0011,1111
        
            byte b1 = 27;//0001,1011
            byte b2 = 39;//0010,0111
                         //0011,1100
                         
            //同位比较,两者不同,则为1    
            System.out.println(b1 ^ b2);//60 - 0000,0000,0000,0000,0000,0000,0011,1100
        
            & | ^ :
                前后两侧为boolean,此符号为逻辑运算符
                前后两侧为整数,此符号为位运算符
                    
            << 左移:整体向左移动n位,就用n个0补位
                byte b = 27;//0001,1011
                System.out.println(b << 2);//108 -- 0110,1100
                
            >> 右移:整体向右移动n位,就用n个最高位补位
                byte b = -27;//1110,0101
                         //1111,1001
                System.out.println(b >> 2);//-7 -- 1111,1001
                
            >>> 无符号位右移:整体向右移动n位,就用n个0补位
                byte b = -27;//1110,0101
                             //0011,1111,1111,1111,1111,1111,1111,1001
                System.out.println(b >>> 2);//1073741817
                
            面试题一:
                //-1 int(32位):1111,1111,1111,1111,1111,1111,1111,1111
                //     byte(8位):1111,1111
                //     char(16位):1111,1111,1111,1111
                //     int(32位):0000,0000,0000,0000,1111,1111,1111,1111
                System.out.println((int)(char)(byte)-1);
                
            面试题二:采用最有效率的方式计算4乘以4
                //0001,0000
                System.out.println(2<<3);
            
        */
            
        
            
                
    }
}
点赞
收藏
评论区
推荐文章
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java中的7个位运算运算符
位运算指的是针对整数的二进制进行的位移操作。位运算提供比算术运算更高的效率,但是位运算的代码可读性较差,建议所有使用位运算的地方写上注释。Java中提供7个位运算符用于位运算。左移(<<)左移运算是将操作数二进制值逐位左移若干位,左移过程中符号位不变,高位溢出则舍弃,低位则补0。范例结果范例结果00000001<<
Wesley13 Wesley13
3年前
java位运算大全
位运算因为是CPU直接支持的操作指令,也是基于二进制的操作,所以具有相当高的效率,在一些场合,合理应用位运算将具有很高的性能。通常在一些加密算法,图型算法中都会使用到位运算。Java位运算符位 运 算 符 用 来 对 二 进制 位 进 行 操 作 ,Java中提 供 了 如 下所 示 的 位 运 算符:位 运 算 符 (>>,<<
Wesley13 Wesley13
3年前
JAVA位运算总结
关于二进制关于二进制的概念,网上已经很多,这里不多赘述,只说关键的属性说明和示例。维基百科(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fzh.wikipedia.org%2Fwiki%2F%25E6%259C%2589%25E7%25AC%25A6%25E8%
Wesley13 Wesley13
3年前
Java位运算总结:位运算用途广泛
前天几天研究了下JDK的Collection接口,本来准备接着研究Map接口,可是一查看HashMap类源码(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fcpro.baidu.com%2Fcpro%2Fui%2Fuijs.php%3Fadclass%3D0%26app_id%3D0%2
Stella981 Stella981
3年前
Python运算符大全
  一、Python的算术运算  Python的算术运算符与C语言类似,略有不同。包括加()、减()、乘(\)、除(/)、取余(%)、按位或(|)、按位与(&)、按位求补(~)、左移位(<<)、右移位()、单目求反()、幂运算(\\)、整除运算(//)、增强运算、增强矩阵乘法(@)。  增强运算是将算术运算符或逻辑运算符放到等号的左
Stella981 Stella981
3年前
20180109Java位运算
一,Java位运算1.表示方法:  在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1。补码的表示需要满足如下要求。 (1)正数的最高位为0,其余各位代表数值本身(二进制数)。 (2)对于负数,通过对该数绝对值的补码按位取反,再对整个数加1。 2.位运算符位运算表达式由
可莉 可莉
3年前
20180109Java位运算
一,Java位运算1.表示方法:  在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1。补码的表示需要满足如下要求。 (1)正数的最高位为0,其余各位代表数值本身(二进制数)。 (2)对于负数,通过对该数绝对值的补码按位取反,再对整个数加1。 2.位运算符位运算表达式由
Wesley13 Wesley13
3年前
C#位运算
在C中可以对整型运算对象按位进行逻辑运算,按位进行逻辑运算的意义是:依次取被运算对象的每个位,进行逻辑运算,每个位的逻辑运算结果是结果值的每个位,C支持的位逻辑运算符如下表。!(https://oscimg.oschina.net/oscnet/e3ff3ca0d8190d7cf6a5c8269feaab32004.jpg)1、位逻辑非运算
Wesley13 Wesley13
3年前
JAVA位运算
位移动运算符:<<表示左移,左移一位表示原来的值乘2.例如:3<<2(3为int型)1)把3转换为二进制数字00000000000000000000000000000011,2)把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,3)在低位(右侧)的两个空位补零。则得到的最终结果是00000000