首页 > 编程语言 >Java:移位运算符左移运算符<<、右移运算符>>、无符号右移运算符>>>

Java:移位运算符左移运算符<<、右移运算符>>、无符号右移运算符>>>

时间:2023-09-03 13:06:00浏览次数:32  
标签:右移 11111111 Java 00000000 System 运算符 out



目录

  • 符号位
  • 左移运算符<<
  • 右移运算符>>
  • 无符号右移运算符>>>
  • 其他


符号位

二进制形式最左边的第一位是符号位

  • 0表示正数
  • 1表示负数

例如

十进制:1
二进制原码:00000000 00000000 00000000 00000001

十进制:-1
二进制原码:10000000 00000000 00000000 00000001

左移运算符<<

规则:丢弃左边指定位数,右边补0

示例

// 相当于 4 * 2^1 = 8
System.out.println(4 << 1); // 8

二进制计算

4 << 1

  00000000 00000000 00000000 00000100
=>
0|00000000 00000000 00000000 00001000

右移运算符>>

规则:丢弃右边指定位数,左边补上符号位

示例

// 相当于 4 / 2^1 = 2
System.out.println(4 >> 1); // 2

// 相当于 -4 / 2^1 = -2
System.out.println(-4 >> 1); // -2

二进制计算

-4 >> 1

原码:10000000 00000000 00000000 00000100
反码:11111111 11111111 11111111 11111011
补码:11111111 11111111 11111111 11111100
=>
补码:11111111 11111111 11111111 11111110|0
反码:11111111 11111111 11111111 11111101
原码:10000000 00000000 00000000 00000010

无符号右移运算符>>>

规则:丢弃右边指定位数,左边补上0

示例

System.out.println(4 >>> 1); // 2
System.out.println(-4 >>> 1); // 2147483646

二进制计算

-4 >>> 1

原码:10000000 00000000 00000000 00000100
反码:11111111 11111111 11111111 11111011
补码:11111111 11111111 11111111 11111100
=>
补码:01111111 11111111 11111111 11111110|0

其他

右移32位,相当于没有移动

// 移动位数大于等于32位操作时,会先求余(%)后再进行移位操作
System.out.println(4 >> 32); // 4
System.out.println(4 >> 0); // 4

参考文章


标签:右移,11111111,Java,00000000,System,运算符,out
From: https://blog.51cto.com/mouday/7339488

相关文章

  • Java底层起步
    Java底层起步Java介绍什么是面向对象?例如:小戴正在做饭时,发现没酱油了,对着外面的朋友小张说,小张你去买瓶酱油,然后小张给楼下超市的小王打电话,让送了一瓶酱油上来。在上述的过程中,从面向对象的角度来讲,其强调的是谁来做这个事,而不是这个事的过程。(是以人及结果为导向而不是过程为导......
  • Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: The
    这个错误表明在尝试获取JDBC连接时发生了SQLException,并且该异常表示服务器不识别或不包含一个以上的时区。以下是一些可能的解决方法:确认服务器时区设置:确保你的服务器时区设置正确。你可以在数据库中运行以下查询来检查当前时区设置:sqlSELECT@@全球化设置(‘TzSystem’);如......
  • idea启动项目报错Error:(5, 52) java: 程序包org.springframework.beans.factory.anno
    idea启动项目报错Error:(5,52)java:程序包org.springframework.beans.factory.annotation不存在IDEA启动项目报错ERROR:(5,52)JAVA:程序包ORG.SPRINGFRAMEWORK.BEANS.FACTORY.ANNOTATION不存在去IDEA下查找maven选项:如果还不行,则继续选择下面的runner,勾选deleteIDEbuild......
  • idea配置默认javadoc类、接口注释,自动生成文档
    idea配置类#if(${PACKAGE_NAME}&&${PACKAGE_NAME}!="")package${PACKAGE_NAME};#end#parse("FileHeader.java")/***总体描述*<p>创建时间:${DATE}${TIME}</p>*@authorzhaoXin*@sincev1.0*/publicclass${NAME}{}接......
  • java打war包、jar包方式,java运行war包、jar包方式
    Javaspringboot部署到生产环境有两种常见方式1打jar包,使用了内置的tomcat服务器,流程简单2打war包,可以放标准tomcat服务器中jar包1pom.xml新增<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin......
  • Java使用有限状态机算法实现判断字符串是否合法
    题目描述请根据给出的正则表达式来验证邮箱格式是否合法,如果用户输入的格式合法则输出「邮箱格式合法」,否则输出「邮箱格式不合法」。正确格式对应的正则表达式"[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+";输入:[email protected]输出:邮箱格式合法分析最容易想到的是正则表达......
  • javaee spring 测试aop 切面
    切面类packagecom.test.advice;importorg.aspectj.lang.ProceedingJoinPoint;//增强类publicclassMyAdvice{//将这个增强方法切入到service层的add方法前publicvoidbefore(){System.out.println("添加用户之前");}}目标类packag......
  • javaee spring 静态代理
    静态代理packagecom.test.staticProxy;publicinterfaceIUsersService{publicvoidinsert();}packagecom.test.staticProxy;//目标类publicclassUsersServiceimplementsIUsersService{@Overridepublicvoidinsert(){System.out.print......
  • javaee spring jdbc 查询方法
    javaeespringjdbc查询方法packagecom.test.dao.impl;importcom.test.dao.IUsersDao;importcom.test.pojo.Users;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.jdbc.core.JdbcTemplate;importorg.springframework.jdbc......
  • javaee spring jdk动态代理
    jdk动态代理packagecom.test.jdkProxy;publicinterfaceIUsersService{publicvoidinsert();}packagecom.test.jdkProxy;//目标类publicclassUsersServiceimplementsIUsersService{@Overridepublicvoidinsert(){System.out.println(&qu......