首页 > 编程知识 正文

java中除法取整,int类型除法向上取整

时间:2023-05-04 20:01:49 阅读:27151 作者:3055

根据功能的不同,Java运算符可以分为算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和条件运算符。

算术运算符算术运算符包含常规加法()、减法(-)、乘法(-)、除法(/)和模数) %,用于完成整数类型和浮点类型数据的算术运算。

许多语言的调制运算只能用于整数类型。 Java对其进行了扩展,允许浮点数的调制操作。 例如,3%2的结果为1,1,15.2 % 5的结果为0.2。 模具操作也可以用于负数。 结果的符号与第一个操作数的符号相同。 例如,5%-3的结果为2,-5%3的结果为-2。 另外,算术运算符有“”和“--”两种,分别称为正1和负1运算符。 这两种运算符有前缀格式和后缀格式,含有不同。 例如,I和I的执行顺序不同,I在使用I之前为1,I在使用I之前为1。 (I )和) I的情况与此相似。

关系运算符

关系运算符用于比较两个值:“大于”、“小于”、“大于”、“大于”、“小于”、“等于”和“不等于”。=) 6种。 关系运算符是二元运算符。 也就是说,每个运算符都有两个操作数,运算结果为逻辑值。 在Java中是“==”和“!=”两种运算符用于任何数据类型。 例如,可以确定两个数字的值是否相等,也可以确定对象或数组的实例是否相等。 在确定实例时,比较的是两个对象在内存中的引用地址是否相等。

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

位运算符

位运算符用于处理包含按位反转(~)、位和)、位或(|)、异或(^ )、右移位()、左移位()、无符号右移位)的二进制位。 位运算符只能对整数类型和字符类型的数据进行操作。

1 .相反((~) ) )。

参加运算的1个数据按二进制位进行“反转”运算。

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

也就是说,对一个二进制数按位取反,即0变为1,1变为0。

2 .按位和() ) )。

参与运算的两个数据用二进制位进行and运算。

运算规则: 00=0; 01=0; 10=0; 11=1; 也就是说,两个人同时变成“1”,结果变成“1”。 否则等于0。

例如,35或0000 0011 0000 0101=0000 0001,因此35的值为1。

3 .位或(|) ) ) ) ) ) ) ) ) ) )。

参与运算的两个对象用二进制位进行or运算。

运算规则: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位:

位移后的十进制值为24690,正好是12345的两倍。 因此,有些人用左位移运算符代替乘以2的操作。 但是,这并不意味着要乘以真的或2。 虽然在很多情况下可以这样使用,但您应该知道,位移运算符通常可以代替乘以2的操作。 但是,这并不意味着两者是一样的。

请想想:如果任意十进制数左移32位,右补32个0,十进制不是都等于0吗? 当然不是! 将int型数据向左移动时,如果向左移动的位数在32位以上,位数首先求出馀数,然后向左移动。 也就是说,如果真的将32位的123451 32左移,则先求出位数。 也就是说,12345(322 )相当于12345,因此为12345 33的值和123451

6 .向右移动() )。

同样,还是以12345这个数值为例,12345向右移动一位: 123451。

向右移动的值为6172,与int类型的数据12345除以2所得的整数相同,因此在某些情况下也可以代替除以2的操作。 另外,对于超过32位的位移,与左移运算符相同,首先求出位数并求出馀数。

7 .无符号右移(

>>>)

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

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

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

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

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

条件运算符

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

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

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

运算符的优先次序

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。