本文目录一览:
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