aoa,purple-金融科技浪潮,区块链、智能投资

按位运算符答应咱们操作一个整数主数据类型中的单个“比特”,即二进制位。按位运lol半价吧算符会对女儿与爸爸两个自变量中对应的位履行布尔代数,并终究生成一个成果。

按位运算来源于C言语的初级操作。咱们常常都要直接操作硬件aoa,purple-金融科技浪潮,区块链、智能出资,需求频频设置硬件寄存器内的二进制位。

Java的规划初衷是嵌入电视300104顶置残爱死神复仇公主盒内,所以这种初级操作仍被保存下来了。但是,因为操作系统的前进,现在也财运亨通许不用过于频频地进行按位运算。

若两个输入位都是1,则按位AND运算符奎木狼下凡变成了谁(&)在输出位里生成一个1;不然生成0。若两个输入位里至少有一个是1,则按位OR运算符(|)在输出位里生成一aoa,purple-金融科技浪潮,区块链、智能出资个1;只要在两个输入位都是0的情况下,它才会生成一个0。若两个输入位的某一个是1,但不全都是1,那么按位XOR^,异或)在输出位里生成一个1。按位NOT~,也叫作“非”imp运算符)属4虎影库于一元运算符;它只对一大桥未久编号个自变量进行操作(其他一切运算符都是二元运算符)。按位NOT生温州飓风网成与输入位的相反的值——若输入0,则输出1;输入1,则输出0

按位运算符和逻辑运算符都运用了相同的字符,仅仅数量不同。因而,咱们能方便地回忆各自的意义:因为“位西湖十景”是十分“小”的,所以按位运算符仅运用了一个字符。

按位运算符可与等号(=)联合运用,以便兼并运算及赋值:&=|=^=都是合法的(因为~是一元运算符,所以不行与=联合运用)。

咱们将boolean(布尔)类型当作一种“单位”或“单比特”值对待,所以它多少有些共同的当地。咱们可履行按位ANDORXOR,但不能履行按位NOT(大概是为gogoanime了避免与逻辑NOT混杂)aoa,purple-金融科技浪潮,区块链、智能出资。关于布尔值,按位运算符具有与逻辑运算符相同的作用,仅仅它们不会半途“短路”。此外,针对布尔值进行的按位运算为咱们新增了一个XOR逻辑运算符,它并未包含在“逻辑”运算符的列表中。在移位表达式中,咱们被制止运用布尔运算aoa,purple-金融科技浪潮,区块链、智能出资,原因将在下面解说。

移位运算符

移位运算符面aoa,purple-金融科技浪潮,区块链、智能出资向的运算目标浩如烟海也是二进制的“位”。可独自用它们处理整新日电动车数类型(主类型的一种)。左移位运算符(<<)能将运算符左面的运算目标向左移动运算符右侧指定的位数(在低位补0)。“有符号”右移位运算符(>>)则将运算符左面的运算目标向右移动运算符右侧指定的位数。“有符号”右移位运算符运用了 “符号扩展”:若值为正,则在高位刺进0;若值为负,则在高位刺进1Java也添加了一种“无符号”右移位运算符(>>>),它运用了“零扩展”:不管正负,都在高位刺进0。这一运算符是CC++没有的。

若对charbyte或许short进行移位处理,那么在移位进行之前,它们会主动转换成一个int。只要右侧的 5个低位才会用到。这样可避免咱们在一个int数里移动不广州妈妈网切实际的位数。若对一个long值进行处理,最终得到的成果也是long。此刻只会用到右侧的6个低位,避免移动医亨风流超越long值里现成的位数。但在进行潘俊轩“无符号”右移位时,也或许遇到一个问题。若对byteshort值进行右移位运算,得到的或许不是正确的成果(Java 1.0和Java 1.1特别杰出)。它们会主动转换成int类型,并进行右移位。但“零扩展”不会发作,所以在那些情况下会得到-1的成果。可用下面这个比如检测自己的完成计划:

//: URShift.java 
// Test of unsigned right shift
publi咸鸭蛋的腌制办法c class URShift {
public static void main(Strinaoa,purple-金融科技浪潮,区块链、智能出资g[] args) {
int i = -1; i >>>= 10;
System.out.println(i);
long l = -1; l >>>= 10;
Sy重生人鱼倾全国stem.out.println(l);
short s = -1; s >>>= 10;
Saoa,purple-金融科技浪潮,区块链、智能出资ystem.out.println(s);
byte b = -1; b >>>= 10;
System.out.println(b);
}
} ///:~

移位可与等号(<<=>>=>>>=)组合运用。此刻,运算符左面的值会移动由右边的值指定的位数,再将得到的成果赋回左面的值。

 关键词: