您的位置:

java移位的问题(java上移下移)

本文目录一览:

java 移位 问题

1.为什么,我直接操作上面定义的i,不会报错呢?

答:当然不报错。因为移位操作默认对其它进制先转换成二进制再通过二进制运算的。

i3 ;

2.在定义一个变量

int temp = 0 ;

//这时候的temp等于多少?

temp |= (i3) ;

答:

i3=i*2 的3次方 为8

temp |= (i3) ;就相当于temp=temp|8-0|(0000...1000)转换为二进制-8

java移位运算问题:“-1>>1”和“-1>>>1”有何差别?

这个是带符号右移

这个是无符号右移

-1的二进制反码表示为 11111111 11111111 11111111 11111111

-11的结果是 : 1111111 1111111 11111111 1111111

-11的结果是: 01111111 11111111 1111111 11111111

无符号右移后前面补0,而带符号右移是补符号位,也就 是第一位,负数补1,正数补0

Java的优点:

java是纯面向对象编程的语言;

平台无关性 (一次编译,到处运行;Write Once,Run Anywhere);

java提供了许多内置的类库,通过这些类库,简化了开发人员的设计工作,同时缩短了项目开发时间;

提供了对Web应用开发的支持,例如,Applet,Servlet,和JSP可以用来开发Web应用程序,Socket,RMI可以用来开发分布式应用程序的类库。

Java移位运算符问题

有符号右移会保留最高位的符号位,从次高位开始逐位右移填0;而无符号右移会将符号位一起右移,并将高位全部填0。

例:对于一个byte类型的数10010100来说,有符号右移2位变为10000101,而无符号右移2位变为00100101。前者仍然是一个负数,而后者变成了正数。

左移只有有符号的,没有无符号左移。

JAVA的移位运算

全错。

在java中,对byte型进行位移操作,那么在移位进行之前,它们会自动转换成一个int,得到的结果也是int

第一题-17:11111111

11111111

11111111

11101111

(无符号右移2位)后为

00111111

11111111

11111111

11111011

=

1073741819

同上

第二题为:00011111

11111111

11111111

11111010

第三题为0

java 移位运算

“系统先用b对32求余” 看这句了吗。

int 一共32位,移32时,已经全部是0。

你希望只移32位,b就不要多于32。开始移位之前做一下判断。

JAVA移位问题

将-1转换为2进制就是所有位上全为1

向右移10位所有位上依旧为1

所以其实b的值并没变还是-1

所以第二次输出的时候还是相当于Integer.toBinaryString(-1)

还是32个1

最有1次输出是把转换出来的2进制数右移10位所以是22个1

其实此时b的值并没有改变还是-1