左移右移问题和Math函数

一、左移和右移

<< 左移运算符   :就是该数对应二进制码整体左移,左边超出的部分舍弃,右边补零。举个例子:253的二进制码1111 1101,在经过运算253<<2后得到11 1111 0100。

>> 右移运算符 :该数对应的二进制码整体右移,左边的用原有标志位补充,右边超出的部分舍弃。

>>>  无符号右移 : 不管正负标志位为0还是1,将该数的二进制码整体右移,左边部分总是以0填充,右边部分舍弃。

number << 1  =  number*2;           number >> 1 = number/2

在移位操作前,编译器会先把数转换成int类型,由于int类型只占用32位,所以:number >> 32 = number

二、Math类中的round、ceil和floor方法

1、Math.round() :四舍五入(原理是原数据先+0.5再向下取整,返回值为int)   

例:Math.round(11.4) = 11 ;Math.round(11.5) = 12  ; Math.round(-11.5) = 11 ; Math.round(-11.6) = -12

2、Math.ceil():向上取整 (返回值为double)

例:Math.ceil(11.4) = 12.0 ; Math.ceil(11.5) = 12 ; Math.ceil(-11.5) = -11 ;Math.ceil(-11.6) = -11

3、Math.floor():向下取整(返回值为double)

例:Math.floor(11.4) = 11.0 ; Math.floor(11.5) = 11 ; Math.floor(-11.5) = -12 ;Math.ceil(-11.6) = -12

猜你喜欢

转载自blog.csdn.net/qq_41776884/article/details/81592924