移位运算符的含义_移位运算符的使用

移位运算符的含义_移位运算符的使用Java 中的移位运算符(Shift Operator)针对移位(Shift Operator)操作符是最基本的操作符之一,几乎每种编程语言都包含这一操作符。同时我们对移位运算又会觉得比较陌生和困惑,这是因为移位运算除了在 JDK 底层你会遇到不少,还有就是在各种奇

Java 中的移位运算符(Shift Operator)   针对移位(Shift Operator)操作符是最基本的操作符之一,几乎每种编程语言都包含这一操作符。   同时我们对移位运算又会觉得比较陌生和困惑,这是因为移位运算除了在 JDK 底层你会遇到不少,还有就是在各种奇葩的面试题会遇到一些,在实际使用的时候,这个运算其实很难用得上。   因为用得不多,所以在大部分人的面对的代码情况下,根本不会考虑移位运算,所以对移位运算我们大致知道下就可以了,至于如何奇葩的运算,你只知道一些基本概念就行,其实很多时候并不需要你直接用移位运算算出来。   基本概念   针对移位运算,我们需要了解有几个基本概念。   3 个移位运算符   Java 只有 3 个移位运算符, (左移)、 (带符号右移)和 (无符号右移)。   为什么有 3 个,移位运算不是左就是右,为什么有 3 个?   因为 Java 的整数是有符号的整数,所以针对符号转换 Java 添加了一个无符号右移。   只能用于整数   Java 的移位运算,不能用于浮点数,只能用于整数。   因为 Java 可以处理整数的长度不一样,所以移位运算只会用在 int 上,虽然其他数据类型也可以用,但是都是在转换成 int 后进行计算的。   类型长度long64 位int32 位short16 位byte8 位char8 位   整数 2 进制表达   在 Java 的整数 int 表达中,其中有一个位留给了符号位置,所以真正可以存储数据的位为 31 位。   因此,Int 的存储范围为:[-2^31,2^31-1],所以上面的指数为 31, 而不是 32 的原因是其中有一位留给了符号位。   左移操作符 <<   左移操作符 是将数据转换成二进制数后,向左移若干位,高位丢弃,低位补零 。   如下面的代码:   程序的输出为:   因为都在末尾补 0 ,所以在范围内,不管你是左移 1 位还是超过 1 位,都是等于 10 进制的数乘以 2。   
移位运算符的含义_移位运算符的使用
移位运算符的含义_移位运算符的使用   带符号右移操作符 >>   Java中整型表示负数时,最高位为符号位,正数为 ,负数为 。   是带符号的右移操作符,将数据转换成二进制数后,向右移若干位,高位补符号位,低位丢弃 。   对于正数作右移操作时,具体体现为高位补 ;负数则补   这个主要是针对右移动的时候高位出现空白,我们应该还是补 0 还是 1 的问题。   带符号的右移意思就是:当高位出现空白的时候,我们补符号位,根据当前的数据不同而不同。   如下面的代码:   运行结果为:   我们可以看到上面的移位为带有符号的移位置,所有移动的高位在负数的时候都被补充为符号位了。   如果是负数的话,就会补充为 1 。   无符号右移操作符 >>>   无符号右移操作符 与 类似,都是将数据转换为二进制数后右移若干位,不同之处在于,不论负数与否,结果都 是高位补零,低位丢弃 。   这个操作符的计算对负数的计算会因为补位的不同而变成整数。   如下面的代码。   程序输出如下:   
移位运算符的含义_移位运算符的使用
移位运算符的含义_移位运算符的使用   从上面的代码输出中,我们会发现对应的 2 进制长度不一样,因为在 Java 程序中对于二进制,前面为 0 的时候,在输出的时候会进行丢弃的。   所以显示的长度不一样,如果希望显示长度一致的话,前面补 0 就可以了。   https://www.ossez.com/t/java-shift-operator/14594

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/22092.html

(0)
上一篇 2024年 9月 15日 上午8:06
下一篇 2024年 9月 15日 上午8:10

相关推荐

关注微信