java的按位运算符
按位运算符答允我们操纵一个整数主数据范例中的单个“比特”,即二进制位。按位运算符会对两个自变量中对应的位执行布尔代数,并最终生成一个功效。
按位运算来历于C语言的初级操纵。我们常常都要直接哄骗硬件,需要频繁配置硬件寄存器内的二进制位。Java的设计初志是嵌入电视顶置盒内,所以这种初级操纵仍被保存下来了。然而,由于操纵系统的进步,此刻也许不必过于频繁地举办按位运算。
若两个输入位都是1,则按位AND运算符(&)在输出位里生成一个1;不然生成0。若两个输入位里至少有一个是1,则按位OR运算符(|)在输出位里生成一个1;只有在两个输入位都是0的环境下,它才会生成一个0。若两个输入位的某一个是1,但不全都是1,那么按位XOR(^,异或)在输出位里生成一个1。按位NOT(~,也叫作“非”运算符)属于一元运算符;它只对一个自变量举办操纵(其他所有运算符都是二元运算符)。按位NOT生成与输入位的相反的值——若输入0,则输出1;输入1,则输出0。
按位运算符和逻辑运算符都利用了同样的字符,只是数量差异。因此,我们能利便地影象各自的寄义:由于“位”长短常“小”的,所以按位运算符仅利用了一个字符。
按位运算符可与等号(=)连系利用,以便归并运算及赋值:&=,|=和^=都是正当的(由于~是一元运算符,所以不行与=连系利用)。
我们将boolean(布尔)范例看成一种“单元”或“单比特”值看待,所以它几多有些奇特的处所。我们可执行按位AND,OR和XOR,但不能执行按位NOT(或许是为了制止与逻辑NOT夹杂)。对付布尔值,按位运算符具有与逻辑运算符沟通的结果,只是它们不会半途“短路”。另外,针对布尔值举办的按位运算为我们新增了一个XOR逻辑运算符,它并未包罗在“逻辑”运算符的列表中。在移位表达式中,我们被克制利用布尔运算,原因将在下面表明。