java 运算问题

问题1
byte b=(byte)0xf1
byte d=(byte)(b>>>4)

问题2
byte b=(byte)0xf1
byte e=(byte)((b&0xff)>>4)

我想问的是在问题1的d把b>>>4的时候会上升至int,那么
上升后的值是怎样的?
例如:0000 0000 1111 0001 还是怎样请打出来并解释

还有问题二,((b&0xff)>>4)在这里面有没有把值上升到int呢?还是以btye进行运算?如果上升后的int的十六进制是什么?请打来看看.

 

 

 

1.java中“左移位”运算符 “<<”,是将整型数据的二进制形式,各数位向左移动给定的位数。右边的空出的所有位数补0。如,a<<1,是将a的二进制表示形式,左移移位,右边补零。

2.java中“有符号右移位”运算符 “>>”,是将整型数据的二进制形式,各数位向右移动给定的位数。左边的空出的所有位数根据移位前,原来的内容,原来为0,就补0,原来为1就补1。

3.java中“无符号右移位”运算符 “>>”,是将整型数据的二进制形式,各数位向右移动给定的位数。左边的空出的所有位数补0。

4.java中,移位运算符适用的数据类型有:byte short char int long。

5.对于低于int型的操作数,先转换为int型再移位。
即:原始数据类型执行算术运算(或按位运算),类型比int型小的(即char、byte、short、),在进行运算之前,这些值会自动提升成int型。参见:使用java原始数据类型的几处细节

6.对于int型整数移位,a>>b,系统先将b对32取模,得到的结果才是真正的移位的位数。例如:a>>33和a>>1的结果是一样的。而,a>>32的结果就是a。(即一个int型数是32位的,如果你移动了32位,那么所有数位都移出了,就没有什么意义了,所以系统会先将移动的位数对32取模)


7.对于long型整数移位,a>>b,系统先将b对64取模,得到的结果才是真正的移位的位数。

8.a>>1与a/2的结果是一样的,a<<1与a*2的结果是一样的。
总之,一个数右移n位的结果是这个数除以2的n次方。一个数左移n位的结果是这个数乘以2的n次方。所以,当我们需要用程序求2的n次方时,可以写成这样,iresult=1<<n;
你自己慢慢算吧~~我只告诉你方法

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值