首页 > 编程语言 >Java中的整数移位运算符

Java中的整数移位运算符

时间:2024-09-08 20:49:12浏览次数:10  
标签:右移 20 运算符 Java 1010 10100 移位

对于<<, >>两种运算符,可以这样说:
\(a<<b=a*2^b\)
\(a>>b=a/2^b\)
但是对于>>>...不好说了。

这些位运算在计算机中怎样运算的?

大家都知道,整数在计算机中是以二进制存储的:
\(0 = (0)_2\)
\(4 = (100)_2\)
\(8 = (1000)_2\)
\(20 = (10100)_2\)
\(666 = (1010011010)_2\)

左移(<<

\(a << b\)就是在\(a\)的二进制后面添上\(b\)个\(0\),所以\(a<<b=a*2^b\)

拿\(20\)当例子,

\(20 << 1 = (10100)_2 << 1 = (101000)_2 = 40\),
\(20 << 2 = (10100)_2 << 2 = (1010000)_2 = 80\)。

右移(>>

>><<相反,\(a>>b\)就是在\(a\)的二进制后面去掉\(b\)位,所以\(a>>b=a/2^b\)

还是拿\(20\)当例子:

\(20 >> 1 = (10100)_2 >> 1 = (1010)_2 = 10\),
\(20 >> 2 = (10100)_2 >> 2 = (101)_2 = 5\)

如果末尾不是\(0\)呢?照样去:

\(21 >> 1 = (10101)_2 >> 1 = (1010)_2 = 10\)

无符号/逻辑右移(>>>

看这里

标签:右移,20,运算符,Java,1010,10100,移位
From: https://www.cnblogs.com/stanleys/p/18403425/java-binmove

相关文章

  • 1-5java运算符
    Java运算符计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,java也提供了一套的运算符来操纵变量。我们可以把运算符分成以下几组:算术运算符关系运算符位运算符逻辑运算符赋值运算符其他运算符算术运算符算术运算符用在数学表达式中,它们的作用和数学中的作......
  • 1-6Java条件语句
    Java条件语句if语句一个if语句包含一个布尔表达式和一条或多条语句。语法if语句的语法如下:`if``(布尔表达式){````//如果布尔表达式为true将执行的语句``}`如果布尔表达式的值为true,则执行if语句中的代码块,否则执行if语句块后面的代码。实例`public``class`......
  • [Java基础]IO的同步和阻塞
    同步与异步什么是同步与异步呢?百度百科是这样定义的:同步指两个或两个以上随时间变化的量在变化过程中保持一定的相对关系。异步与同步相对(这解释让我无言相对)所以,我们需要明确的是同步与异步针对的是两个或者两个以上的事物。对于同步而言,一个任务(调用者)的完成需要依赖另一个......
  • Java 21的Concurrency的笔记
    JavaCoreLibrariesConcurrencyConcurrencyAPI包括:VirtualthreadsStructuredconcurrencyTaskschedulingframework即线程池,常见、易用。Fork/joinframework即ForkJoinPool,不过目前还没有在项目中实际使用过。Concurrentcollections线程安全的容器,比如......
  • Java并发编程实战 07 | 如何正确停止线程
    什么时候需要停止一个线程?一个线程被创建并启动之后,大部分情况下都会自然运行至结束,但是也有一些情况需要主动停止线程,比如:用户主动取消执行:用户可能会中止一个正在进行的操作,这时需要停止相关线程。运行时错误或超时:线程可能因为运行时错误或超时而需要被停止,以避免长时......
  • Java并发编程实战 08 | 彻底理解Shutdown Hook
    钩子线程(HookThread)简介在一个Java应用程序即将退出时(比如通过正常执行完成或通过用户关闭应用程序),通常需要进行一些清理操作,例如:释放资源(如文件句柄、网络连接)。关闭数据库连接。保存未完成的数据或状态。我们可以通过钩子线程实现这一点,钩子线程是指在程序结束时,JVM......
  • 【JavaScript】LeetCode:16-20
    文章目录16无重复字符的最长字串17找到字符串中所有字母异位词18和为K的子数组19滑动窗口最大值20最小覆盖字串16无重复字符的最长字串滑动窗口+哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新......
  • JAVA代理-----详细深入介绍
    什么是代理(定义)定义:给目标对象提供一个代理对象,并且由代理对象控制对目标对象的引用为什么要使用JAVA代理(目的)1.功能增强:通过代理业务对原有业务进行增强2.控制访问通过代理对象的方式间接的范文目标对象,防止直接访问目标对象给系统带来不必要的复杂性。例:银行转账的系统......
  • 【Java】Word题库解析2
     初稿见:https://www.cnblogs.com/mindzone/p/18362194一、新增需求在原稿题库之后,还需要生成一份纯题目+ 纯答案答案放在开头,题目里面去掉答案在检查题型时还发现部分内容略有区别: 所以在判断是否为答案的时候需要兼容这种答案二、关于老版本支持doc2000版需要追加......
  • 1-4Java修饰符
    Java修饰符Java语言提供了很多修饰符,主要分为以下两类:访问修饰符非访问修饰符修饰符用来定义类,方法或者变量,通常放在语句的最前端。访问控制修饰符Java中,可以使用访问控制符来保护对类,方法,变量,构造方法的访问。Java支持4种不同的访问权限。default(即默认,什么也不写):在......