23是啥意思啊

来源:学生作业帮助网 编辑:作业帮 时间:2024/08/30 22:06:31
23是啥意思啊
xW]SX+g5 VhvǽiW; qC`HlCmZZV*j?PDtrpտ 3;{缇F^|s[TFƹXG iG4{5>˩;I\>II#4|Ϋ+Sxa]y9iHͧvEZ\R޵^o3C%:O絋U(K<^_8s95pqR)5;>)C B> ׳SP+|8c L;/[@Lxna(o+󳸸B2U h|RWf֜U^-=Kj$G90R[8~&*o-S{Lbg-׳UD„u !x p@"қo# &R3D >6YBtk y[Iޮ|(Yrt cc)6Z|Z$Vhӷr9ꨉ\Nd\aСꞒPY sv!3\] i#|Jʛc`Ymw8`B|I'kWӍӚSQ>_|V^(kyybV75QL g4]C(H@ U ʵj,%Ԗe*Izu]cF.Ai@P4"獟,{u =]>rTka, 8L]\gd\lNWi<fЁX%7K9+~VyW>Ȟ,+D}utܸw7$ɴ4dא(DnX=@1nxDB"1mcc \0Df)M g8>Ɍ31u(f-33iB,Z«kԳ.۸X-gSSçP)As'=H<6T33ڙ9zn:I[KPcKꃧ caALo8? rB0tj(sǒ kFŐdqeS|_=ni|X]30tS .) Sx(f~{e[? | ; ^߾%@ޕȻco /

23是啥意思啊
23是啥意思啊

23是啥意思啊
引用一下think in java里的原文吧!自己看:
移位运算符
移位运算符面向的运算对象也是二进制的“位”.可单独用它们处理整数类型(主类型的一种).左移位运算符()则将运算符左边的运算对象向右移动运算符右侧指定的位数.“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1.Java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0.这一运算符是C或C++没有的.
若对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int.只有右侧的5个低位才会用到.这样可防止我们在一个int数里移动不切实际的位数.若对一个long值进行处理,最后得到的结果也是long.此时只会用到右侧的6个低位,防止移动超过long值里现成的位数.但在进行“无符号”右移位时,也可能遇到一个问题.若对byte或short值进行右移位运算,得到的可能不是正确的结果(Java 1.0和Java 1.1特别突出).它们会自动转换成int类型,并进行右移位.但“零扩展”不会发生,所以在那些情况下会得到-1的结果.可用下面这个例子检测自己的实现方案:
//:URShift.java
// Test of unsigned right shift
public class URShift {
public static void main(String[] args) {
int i = -1;
i >>>= 10;
System.out.println(i);
long l = -1;
l >>>= 10;
System.out.println(l);
short s = -1;
s >>>= 10;
System.out.println(s);
byte b = -1;
b >>>= 10;
System.out.println(b);
}
} ///:
移位可与等号(=或>>>=)组合使用.此时,运算符左边的值会移动由右边的值指定的位数,再将得到的结果赋回左边的值.
下面这个例子向大家阐示了如何应用涉及“按位”操作的所有运算符,以及它们的效果:
//:BitManipulation.java
// Using the bitwise operators
import java.util.*;
public class BitManipulation {
public static void main(String[] args) {
Random rand = new Random();
int i = rand.nextInt();
int j = rand.nextInt();
pBinInt("-1",-1);
pBinInt("+1",+1);
int maxpos = 2147483647;
pBinInt("maxpos",maxpos);
int maxneg = -2147483648;
pBinInt("maxneg",maxneg);
pBinInt("i",i);
pBinInt("~i",i);
pBinInt("-i",-i);
pBinInt("j",j);
pBinInt("i & j",i & j);
pBinInt("i | j",i | j);
pBinInt("i ^ j",i ^ j);
pBinInt("i > 5",i >> 5);
pBinInt("(~i) >> 5",i) >> 5);
pBinInt("i >>> 5",i >>> 5);
pBinInt("(~i) >>> 5",i) >>> 5);
long l = rand.nextLong();
long m = rand.nextLong();
pBinLong("-1L",-1L);
pBinLong("+1L",+1L);
long ll = 9223372036854775807L;
pBinLong("maxpos",ll);
long lln = -9223372036854775808L;
pBinLong("maxneg",lln);
pBinLong("l",l);
pBinLong("~l",l);
pBinLong("-l",-l);
pBinLong("m",m);
pBinLong("l & m",l & m);
pBinLong("l | m",l | m);
pBinLong("l ^ m",l ^ m);
pBinLong("l > 5",l >> 5);
pBinLong("(~l) >> 5",l) >> 5);
pBinLong("l >>> 5",l >>> 5);
pBinLong("(~l) >>> 5",l) >>> 5);
}
static void pBinInt(String s,int i) {
System.out.println(
s + ",int:" + i + ",binary:");
System.out.print(" ");
for(int j = 31; j >=0; j--)
if(((1 =0; i--)
if(((1L 5,int:1846303,binary:
00000000000111000010110000011111
i) >> 5,int:-1846304,binary:
11111111111000111101001111100000
i >>> 5,int:1846303,binary:
00000000000111000010110000011111
i) >>> 5,int:132371424,binary:
00000111111000111101001111100000
数字的二进制形式表现为“有符号2的补值”.