首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java 运算有关问题

2012-08-27 
java 运算问题问题1byte b(byte)0xf1byte d(byte)(b4)问题2byte b(byte)0xf1byte e(byte)((b&0xff)

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;
你自己慢慢算吧~~我只告诉你方法

?

热点排行