当前位置: 主页 > JAVA语言

java中移位运算-c 移位运算与运算

发布时间:2023-06-05 07:07   浏览次数:次   作者:佚名

Java中的位运算符

强文本关键字:位运算符,位逻辑运算符,移位运算符

一、位运算符

大家在接触运算符的时候通常都已经学完了变量的使用,对于算术以及赋值运算的感觉就是那么容易!这不就是小学的知识嘛,对于逻辑运算符的部分依然无压力,这不就是中学的知识嘛?但是突然出现了一个位运算符,啥是移位?啥是异或?接下来就先从简单的开始。

说起位运算符,其实就是基于数据存储的二进制位进行的运算,更底层,所以效率更高。另外一个需要注意的问题就是:由于小数在进行存储的时候采用的是IEEE(符号,指数,尾数)方式,并不止对整数和小数部分直接转换为二进制来存储的,所以小数是不能使用位运算符来操作的。对于整数和字符型的运算符操作也有一些潜在的法,则相信看完这篇文章你很容易就会掌握。

二、逻辑运算

在逻辑运算中我们已经使用过能够表达逻辑意义的运算符,如:,,,| |,!。这些运算符都有一个共同点,那就是:运算符两边都是布尔值或布尔表达式,他们能够操作的数据类型有限,只能够帮我们进行逻辑运算。有些教材将,,|等位运算符也归为逻辑运算符,因为按位与(,),按位或(|)能够操作的数据类型较多,其中就包括布尔类型,并且也能够帮助我们进行逻辑运算,但是小编还是建议按照符号本身的运算方式和操作数据类型等来记忆。

1。与(和)

与运算相当于物理电路中的串联电路,我们假设用1代表通路,用0代表断路,那么对于串联电路来说,只有当运算符两边全为1(通路)时,运算结果才为1(通路)。

癑ava中的位运算符“

癑ava中的位运算符“

那么按位与就是将运算符两边的数字转换为二进制后,在每两个对应位置上的数字进行与运算,再将最后的结果按十进制写出就可以了。

24,-30:

015387295596015387295596 00011010=26

015387295596115387295596 11100010=-30

115387295596015387295596 00000000=26,-30=2

当我们在使用逻辑与(,,)时会遇到一个短路问题:当用,,把多个布尔表达式连接起来的时候,为了以最快的速度得出结果,那么有些式子将不会执行,被跳过的式子中的代码也就不会被执行。比如:(假式,,真式,,真式),经过前两个式子的结果已经能够确定整个式子的结果:为假,第三个式子无论为真或假都不会影响最终结果,这个时候就会进行跳过。

但是对于,(按位与)java中移位运算,由于本质上是一个位运算,只不过同时也支持布尔类型的直接运算而已,所以不会出现表达式不执行的情况。

2。或(|)

或运算相当于物理电路中的并联电路,我们假设用1代表通路,用0代表断路,那么对于并联电路来说,只要运算符两边有一个为1(通路)时,运算结果就为1(通路)。

癑ava中的位运算符“

癑ava中的位运算符“

那么按位或就是将运算符两边的数字转换为二进制后,在每两个对应位置上的数字进行或运算,再将最后的结果按十进制写出就可以了。

26 | -30:

015387295596015387295596 00011010=26

015387295596115387295596 11100010=-30

115387295596115387295596 11111111=26 | -30=6

当我们在使用逻辑或(| |)时会遇到一个短路问题:当用| |把多个布尔表达式连接起来的时候,为了以最快的速度得出结果,那么有些式子将不会执行,被跳过的式子中的代码也就不会被执行。比如:(真式| |假式java中移位运算,,假式),经过前两个式子的结果已经能够确定整个式子的结果:为真,第三个式子无论为真或假都不会影响最终结果,这个时候就会进行跳过。

但是对于|(按位与),与按位或相同,是一个位运算符,不会出现跳过的情况。

3。取反(~)

取反运算的规则相对简单,同样是在二进制位上的运算,那么遇到0变为1,遇到1变为0。Java中的位运算符