java int相除向上取整_Java基础篇——Java运算符

Java运算符按功能可分为:算数运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和条件运算符。

算数运算符

算术运算符包括通常的加(+)、减(-)、乘(*)、除(/)、取模(%),完成整数型和浮点型数据的算术运算。

许多语言中的取模运算只能用于整数型,Java对此做了扩展,它允许对浮点数进行取模操作。例如,3%2 的结果是 1, 15.2%5 的结果是 0.2。取模操作还可以用于负数,结果的符号与第一个操作数的符号相同,例如,5%-3 的结果是 2,-5%3 的结果是-2。

此外,算术运算符还有“++”和“--”两种,分别称为加1和减1运算符。这两种运算符有前缀形式和后缀形式,含有有所不同。例如,i++ 和 ++i 的执行顺序是不一样的,i++ 在 i 使用之后再 +1,++i 在 i 使用之前先 +1。i-- 和 --i 的情况于此类似。

13cbe8db317dfc7b6f96ea5491e86d8b.png

关系运算符

关系运算符用来比较两个值,包括大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)和不等于(!=)6种。关系运算符都是二元运算符,也就是每个运算符都带有两个操作数,运算的结果是一个逻辑值。Java允许“==”和“!=”两种运算符用于任何数据类型。例如,既可以判断两个数的值是否相等,也可以判断对象或数组的实例是否相等。判断实例时比较的是两个对象在内存中的引用地址是否相等。

逻辑运算符

逻辑运算符包括逻辑与(&&)、逻辑或(||)和逻辑非(!)。前两个是二元运算符,后一个是一元运算符。Java对逻辑与和逻辑或提供“短路”功能,也就是在进行运算时,先计算运算符左侧的表达式的值,如果使用该值能得到整个表达式的值,则跳过运算符右侧表达式的计算,否则计算运算符右侧表达式,并得到整个表达式的值。

f30f6e191f2093a4f861ccdbdfed2aa1.png

位运算符

位运算符用来对二进制位进行操作,包括按位取反(~)、按位与(&)、按位或(|)、异或(^)、右移(>>)、左移(<<)和无符号右移(>>>)。位运算符只能对整数型和字符型数据进行操作。

1. 取反(~)

参加运算的一个数据,按二进制位进行“取反”运算。

运算规则:~1=0; ~0=1;

即:对一个二进制数按位取反,即将0变1,1变0。

2. 按位与(&)

参加运算的两个数据,按二进制位进行“与”运算。

运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;即:两位同时为“1,结果才为“1,否则为0。

例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3 & 5的值得1。

3. 按位或(|)

参加运算的两个对象,按二进制位进行“或”运算。

运算规则:0 | 0=0; 0 | 1=1; 1 | 0=1; 1 | 1=1;

即 :参加运算的两个对象只要有一个为1,其值为1。

例如:3 | 5,即 0000 0011 | 0000 0101 = 0000 0111 因此,3 | 5的值得7。

4. 异或(^)

参加运算的两个数据,按二进制位进行“异或”运算。

运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;

即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。

5. 左移(<<)

运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。例如: 12345 << 1,则是将数字12345左移1位:

08414253f252d08f0469484d9d3aecc4.png

位移后十进制数值变成:24690,刚好是12345的二倍,所以有些人会用左位移运算符代替乘2的操作,但是这并不代表是真的就是乘以2,很多时候,我们可以这样使用,但是一定要知道,位移运算符很多时候可以代替乘2操作,但是这个并不代表两者是一样的。

思考一下:如果任意一个十进制的数左位移32位,右边补位32个0,十进制岂不是都是0了?当然不是!!! 当int 类型的数据进行左移的时候,当左移的位数大于等于32位的时候,位数会先求余数,然后再进行左移,也就是说,如果真的左移32位 12345 << 32 的时候,会先进行位数求余数,即为 12345<<(32%32) 相当于 12345<< 0 ,所以12345<< 33 的值和12345<<1 是一样的,都是 24690。

6. 右移(>>)

同样,还是以12345这个数值为例,12345右移1位: 12345>>1。

d2bb3f48e068aa21cd1c9c58ddf1215e.png

右移后得到的值为 6172 和int 类型的数据12345除以2取整所得的值一样,所以有些时候也会被用来替代除2操作。另外,对于超过32位的位移,和左移运算符一样,,会先进行位数求余数。

7. 无符号右移(>>>)

无符号右移运算符和右移运算符是一样的,不过无符号右移运算符在右移的时候是补0的,而右移运算符是补符号位的。以下是-12345二进制表示:

03a9c10e684d2cda0bc30fd17ceaf631.png

对于源码、反码、补码不熟悉的同学,请自行学习,这里就不再进行补充了讲解了,这里提醒一下,在右移运算符中,右移后补0,是由于正数 12345 符号位为0 ,如果为1,则应补1。

ae0429ef2d4bfc3c93e47359ec852f32.png
1、原码、反码和补码说明:
一个数可以分成符号位(0正1负)+ 真值,原码是我们正常想法写出来的二进制。由于计算机只能做加法,负数用单纯的二进制原码书写会出错,于是大家发明了反码(正数不变,负数符号位不变,真值部分取反);再后来由于+0, -0的争端,于是改进反码,变成补码(正数不变,负数符号位不变,真值部分取反,然后+1)。二进制前面的0都可以省略,所以总结来说:计算机里的负数都是用补码(符号位1,真值部分取反+1)表示的。2、位运算符和2的关系
位运算符和乘2、除2在大多数时候是很相似的,可以进行替代,同时效率也会高的多,但是两者切记不能混淆 ;很多时候有人会把两者的概念混淆,尤其是数据刚好是 2、4、6、8、100等偶数的时候,看起来就更相似了,但是对于奇数,如本文使用的12345 ,右移之后结果为6172 ,这个结果就和数学意义上的除以2不同了,不过对于int 类型的数据,除2 会对结果进行取整,所以结果也是6172 ,这就更有迷惑性了。

赋值运算符

赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。

4e05462c4dacae3cd2edebc235516237.png

除了“=”,其它的都是特殊的赋值运算符,以“+=”为例,x += 3就相当于x = x + 3,首先会进行加法运算x+3,再将运算结果赋值给变量x。-=、*=、/=、%=赋值运算符都可依此类推。

条件运算符

条件运算符( ? : )也称为 “三元运算符”或“三目运算符”。

语法形式:布尔表达式 ? 表达式1 :表达式2。

运算过程:如果布尔表达式的值为 true ,则返回 表达式1 的值,否则返回 表达式2 的值。

运算符的优先次序

在对一个表达式进行计算时,如果表达式中含有多种运算符,则要安运算符的优先次序一次从高向低进行。运算符的优先次序如下:

a4b6b2c89ba5009efe2cbb51aa0b6736.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx php access denied,LNMP 解决Access Denied错误详细介绍

处理搭建好LNMP环境之后&#xff0c;呈现了Access Denied错误搭建好LNMP环境之后&#xff0c;呈现了Access Denied错误&#xff0c;现已扫除掉文件权限的问题也扫除掉是Nginx的问题&#xff0c;而是无法解析PHP的问题。发现网上的很多大牛都是经过Nginx的log来排查错误&#xf…

dp主机_MODBUS 和 PROFIBUS-DP 协议有什么区别

modbus协议和 profibus DP协议两者的区别和用途主要在哪里&#xff1f;相比好多工控人都有这个疑问。今天小编带大家一起学习一下。一、modbus协议和 profibus DP协议综述Modbus协议是应用于电子控制器上的一种通用语言。通过此协议&#xff0c;控制器相互之间、控制器经由网络…

ios上架图片在线制作_不同风格gif在线制作,公众号动态图片制作方法

现在运营公众号的主要方式就通过文章来进行宣传推广&#xff0c;在公众号文章中使用GIF动态图是非常常见的一种图片展现的方式&#xff0c;让文章整体效果看起来更加的生动有趣&#xff0c;所以很多的运营者在日常的工作和生活中会手机许多的动图素材&#xff0c;方便以后的使用…

table tr省略后鼠标移入显示相应信息_中考来了,人机对话、信息技术考试要求看过来...

半岛记者 魏海洋今年的中考将拉开大幕&#xff0c;九年级英语听说人机对话考试(以下简称“人机对话考试”)将于4月20日(周六)至21日(周日)进。八年级信息技术考试将于4月22日(周一)进行&#xff0c;市招考办提醒广大考生&#xff0c;按照准考证规定时间及时参加考试。关于两门考…

大数据平台容量评估_大数据平台

系统概述大数据应用支撑平台提供数据支撑服务&#xff0c;对外发布数据服务进行数据价值变现。包含数据采集、数据治理、数据交换、数据存储、数据计算相关组件的搭建、验证&#xff0c;并建立大数据仓库。b)功能要求1.数据采集&#xff0c;大数据平台数据源层有各类型数据源&a…

oracle数据库访问sqlserver2008,透过SQL Server 2008访问Oracle 10g的配置方法

之前写过一篇关于SQL Server 访问MySQL数据库的文章&#xff0c;最近正好又遇到需要访问Oracle 的情况&#xff0c;将配置过程记录下来也供大家参考。准备工作事先在需要访问Oracle 数据库的主机上完成以下工作&#xff1a;1. 安装SQL Server 数据库&#xff1a;SQL Server 200…

局域网限速软件_2号破解app重器推荐一款强大的快捷软件

破解版精破解版精品软件一些软件需要使用者付费购买才能使用其所有功能(或者才能解除使用期限)&#xff0c;这时一些计算机高手就破解这个软件&#xff0c;使其不用付费也可以完全使用全部功能(或者永久使用)&#xff0c;这种软件就叫破解版软件。此公众号中的破解版软件都源于…

平板电脑办公软件_大屏平板互动软件-平板电脑触摸大屏控制软件

随着数字化时代的到来&#xff0c;触摸大屏软件的应用范围&#xff0c;更加宽广&#xff0c;无论走到哪里都能够见到&#xff0c;各式各样的触摸屏一体机、LED液晶屏&#xff0c;拼接屏等多种展示器&#xff0c;在这些设备上面&#xff0c;均能够安装着各种功能不同软件&#x…

oracle 备份教研归档失败,归档日志丢失造成Rman备份失败解决办法

--测试库的归档日志文件被无意删除了&#xff0c;下面是解决步骤RMAN> backup as compressed backupset database plus archivelog delete input;启动 backup 于 24-2月 -12当前日志已存档使用通道 ORA_DISK_1使用通道 ORA_DISK_2MAN-00571: RMAN-00569: ERROR MESSAGE STA…

苹果6屏幕多大_苹果12使用高通X55,10亿买下的英特尔基带何时能派上用场

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以免费收到最新内容了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。声明&#xff1a;本文转载自网络&#xff0c;如有侵权&#xff0c;请在后台留言联系…

odd raio值 是什麼_乳化油相所需的HLB值

前面有分享过《常用乳化剂HLB值一览表》&#xff0c;为了方便大家查阅HLB值&#xff0c;《有机概念图、HLB值与乳化剂筛选》一文中介绍了HLB值的计算方法以及乳化剂的筛选。今天分享乳化油所需要HLB,方便大家查阅&#xff0c;油相在O/W乳状液和W/O乳状液中所需的HLB值是不同的&…

oracle12c创建schema,Oracle 12c Schema Demo 安装

Oracle 12cR2 schema demo的安装主要参考README.md文件以及Dave的文章&#xff1a;http://www.cndba.cn/dave/article/1985但其中遇到了其他问题(CDB问题)&#xff0c;以下记录安装过程以及故障处理。https://www.cndba.cn/9527/article/2303把文件拷贝到$ORACLE_HOME/demo目录…

caj文件浏览器_caj文件怎么转换成pdf文件?试试这样操作,3步成功转换

诸位小伙伴用过caj文件吗&#xff1f;和pdf文件类似&#xff0c;也和电子书格式有点像&#xff0c;是我们办公中会用到的格式文件&#xff0c;不过假如你分享了一份caj格式的文档给别人&#xff0c;如果他们的电脑上没有安装对应的浏览器&#xff0c;则无法打开、阅读文件哦。鉴…

python人脸识别门禁_用Python做人脸识别

之前用facenet做了一个人脸识别的Demo,所以在此记录一下。但因为我的水平十分有限&#xff0c;疏漏之处请多见谅。1&#xff0c;这个流程大致是先用mtcnn检测人脸位置&#xff0c;得到一个人脸的bounding box。2&#xff0c;然后用opencv根据上一个bounding box把人脸裁剪出来&…

微信电脑客户端登陆_电脑端的微信只能开一个?简单操作就能随意开

微信已经成为工作和生活的必备交流工具&#xff0c;每个人几乎都拥有微信号&#xff0c;而且有些人还会注册两个或多个&#xff0c;用以区分工作和私人。但同时登陆多个账号却成为了难题&#xff0c;现在手机上多开已经很方便&#xff0c;而在电脑上默认只能登录一个&#xff0…

win10下装黑苹果双系统_win10远程双系统重装电脑维修7黑苹果笔记本安装做虚拟机服务mac8...

时间很宝贵,如果您的网速满足需求,我们装机时间不超过30分钟哦联系我们专业/靠谱/安全/快捷专业电脑医生优秀团队只服务为您!组装品牌电脑电脑游戏电脑卡顿中毒故障系统电脑虚拟/电脑多开/开机硬件不成功不收费!统统我来解决聚集于电脑各种症状专业远程在线电脑修复电脑问题分分…

结构体内元素不确定_氮长叶,磷长果,那么生物菌肥能长啥?看完终于不纠结了...

农民朋友们都知道&#xff0c;“庄稼一枝花&#xff0c;全靠肥当家”&#xff0c;肥料对于作物产量的高低起着决定性因素。蔬菜的产量、品质、病虫害、早衰、死亡、落花、落果、干尖干叶等都与肥料有着密切的关系。如今市面上肥料种类五花八门&#xff0c;有氮磷钾肥、中微量元…

openssl 添加自定义算法_GitHub:用PyTorch实现17种深度强化学习算法

【新智元导读】深度强化学习已经在许多领域取得了瞩目的成就&#xff0c;并且仍是各大领域受热捧的方向之一。本文推荐一个用 PyTorch 实现了 17 种深度强化学习算法的教程和代码库&#xff0c;帮助大家在实践中理解深度 RL 算法。深度强化学习已经在许多领域取得了瞩目的成就&…

sync是同步还是非同步_音视频是怎么保持同步的?(四)

今天我们来继续讲音视频是怎么保持同步的。常用同步策略前面已经说了&#xff0c;实现音视频同步&#xff0c;在播放时&#xff0c;需要进行选定一个重要参考时钟&#xff0c;读取帧上的时间戳&#xff0c;同时企业根据的参考时钟来动态管理调节播放。它是目前已知的是&#xf…

电脑下面的任务栏怎么取消隐藏_电脑工具栏怎么调到下面

任务栏的隐藏与显示很简单&#xff0c;有时我们在需要时可以灵活的将其隐藏&#xff0c;还原&#xff0c;下面为大家介绍一下电脑工具栏怎么调到下面的方法。电脑工具栏怎么调到下面一、直接使用鼠标拖拽的方式移动“任务栏”用鼠标左键按住任务栏的空白区域不放&#xff0c;拖…