一定要让你搞懂Java位运算符

2023-01-21 0 270

目录

常用运算符

Java语言中,官方给我们提供了极为丰富的运算操作,但是常用的,好像也就是算术运算符,例如加、减、乘、除、取余等。还有就是关系运算符大于、小于、等于、不等于等。再或者就是逻辑运算符&&、||、!等,至于位运算符,属实用的不多。用的不多今天为什么拿出来讲呢,首先这可以帮助你很好的去理解计算机的底层原理,其次可以让你在面试中略胜一筹,还有就是有些人分不清逻辑运算符和位运算符的区别,例如&&和&,||和|,区别分别是什么,反正刚开始我是有点迷惑,所以这篇文章呢,也算是为自己解惑了。

一定要让你搞懂Java位运算符

位运算符

位运算符,从字面意思上看,就可以知道,是位运算,其实并不难,只是我们不经常用,再加上跟逻辑运算符的混淆,所以就容易让人迷迷糊糊。这里主要讲解&、|、^、~、&gt;>、&lt;<、>>>。其中 ~ 和 >>> 较为复杂。

&、|、^ 运算符

&是按位与,|是按位或、^是按位异或,这三种位运算相对简单,下面给出程序截图,大家应该可以一目了然。
 

一定要让你搞懂Java位运算符

~ 运算符

首先我们要清楚,数字在计算机中是以二进制存储的,准确的说是以二进制的补码形式存储的,我们看到的数一般是以二进制的原码形式转化为十进制展示的,正数的原码、反码、补码是其本身,而负数的反码是符号位不变,其余取反。负数的补码是其反码+1。这里通过简单的例子,来解释原码、反码、补码。
我们以数字5为例,这里通过一个字节来进行讲解。5的原码是00000101,反码也是00000101,补码还是00000101,其中在计算机存储的是补码。如果对5进行取反是什么呢,5的原码取反之后是11111010,提醒:(最高位1表示该数是负数,0表示该数是正数)。但是计算机中存储的是补码,按上面所说的,负数的补码是反码加1。反码是10000101(负数的反码是不改变符号位哦),这里的第一个1就是是表示符号,再加1,就是补码10000110,也就是我们看到的-6。说明:取反是把所有的1变成0,所有的0变成1,反码是除了符号位不变,其余的1变0,0变1。

一定要让你搞懂Java位运算符

<< 和 >> 运算符

简单的理解,<<1 是乘2,>>1是除以2,其中正数右移是前补0,负数右移是前补1。这里的运算要比* /的速度快,看JDK原码的时候,大家应该都见过这些符号。
 

一定要让你搞懂Java位运算符

>>> 运算符

这个是无符号右移,什么叫无符号呢,首先说一下什么是有符号右移,有符号右移,也就是,当该数字是正数,右移前补0,当该数字是负数,右移前补1。而无符号右移不管是正数还是负数,都是前补0。这里以-5为例子进行讲解,通过无符号右移,负数变正数。

一定要让你搞懂Java位运算符

有<<<运算符吗

先说结论,是没有<<<运算符的,因为我们知道在右移的时候,存在着高位是补0还是补1的选择,如果是普通的右移,根据原数字的正负来决定是补0还是补1,而无符号右移,则高位通通补1。因为高位是决定一个数的正负的,而在左移的时候,是在最低位补0,高位的数字是由高位右边的第一个数字决定的,所以不存在补0还是补1的情况,所以没有无符号左移。

为什么8位是-128 ~ 127

既然聊到这了,顺便解释一下,为什么占8位的数字范围是-128 ~ 127,首先,我们要注意0这个数是属于 -128 ~ 127的,也就是说,这一共有256个数字,而127的二进制表示就是0111 1111,0的二进制是0000 0000,1000 0000,这个按说是-0,但是0和-0是不是就重复了,所以规定-0就表示-128,也就是1000 0000表示-128,1111 1111这个二进制表示的是-127哦。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 Java教程 一定要让你搞懂Java位运算符 https://www.20zxx.cn/463073/xuexijiaocheng/javajc.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务