首页 > 编程知识 正文

java赋值运算符,java自增自减运算符详解

时间:2023-05-06 03:36:43 阅读:152710 作者:1667

按位与运算符()

参与运算的两个对象在二进制位上进行or运算。 运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;

换句话说,如果参加运算的两个对象中的一个是1,则该值是1。

例如:3|5即00000011|00000101=00000111,所以3|5的价值是7。

另外,负数以补码的形式按位或参加运算。 “或运算”的特殊作用:

)1)常用于一个数据的位置1。

方法:找出与x对应并置1位的数。 那个数的对应位置是1,剩下的位置是0。 这个数可以等于x,或者x的一部分的位置可以为1。

例:可以用X|00001111=10101111得到X=10100000的低4个位置1。

异或运算符(^ )。

参加运算的2个数据通过二进制位进行异或运算。 运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;

也就是说,对于参与运算的两个对象,如果两个对应的位“不同”,则该位的结果为1,否则为0。

异或运算的特殊作用:

)1)反转特定位,寻找与x要反转的各位相对应的数,该数的对应位为1,剩馀位为零,该数与x对应“异或”。

例如: X=10101110,将x的后4位反转,可以通过X^00001111=10100001得到。

)2)与0不同,或者保留原始值,X^00000000=10101110。

这从上面的例题中可以清楚地看到。

取逆运算符(~)

参加运算的1个数据对每个二进制比特进行“反转”运算。

运算规则:~1=0; ~0=1;

也就是说,对于一个二进制数,每比特取逆,即0变为1,1变为0。

将一个数的最下位设为零时,可以表示为a~1。

1的值为1111111111111111111110,按" and "键时最低位一定为0。 因为“~”运算符的优先级高于算术运算符、关系运算符、逻辑运算符和其他运算符。 左移运算符()。

使一个运算对象的各二进制比特全部左移几个比特(舍弃左边的二进制比特,向右补0 )。

例如:将a=a2的二进制比特向左移位2比特,向右补充0,向左移位1比特,然后a=a*2;

如果左移时舍弃的高位不包含1,则每左移1位,其数为2的乘积。

右移运算符()

将一个数的各二进制比特全部右移几个,正数左移0,负数左移1,右边舍弃。 操作数向右每次移动一位,相当于该数除以2。 例如,a=a2使a的二进制比特向右位移2个比特,向左补0,要看被移位数是正还是负。

将运算符expression1中的所有位向右移位expression2中指定的位数。 expression1的符号位用于向右移动以填充左边空的位。 向右移动的位将被丢弃。 例如,如果评估以下代码,则temp的值为-4。

-14 (即二进制的11110010 )向右移动2位即为-4(即二进制的11111100 )。

vartemp=-142

无符号右移运算符(

将运算符expression1的各位向右移位expression2指定的位数。 向右移动后,左边空出的位用零填充。 向右移动的位将被丢弃。 例如vartemp=-142

变量temp的值为-14 (即二进制111111111111111111111111111111110010 ),向右移动两个数量级为1073741820 (即二进制001111111111111111111111100 )

复合赋值运算符

组合位运算符和赋值运算符以构成新的复合赋值运算符。 它们=例如: a=b相当于a=ab

|=例: a|=b是a=a|b=例: a=b是a=ab=例: a=b相当于a=ab

^=例: a^=b相当于a=a^b

运算规则:与上述复合赋值运算符的运算规则类似。

对不同长度的数据进行位运算

对两个不同长度的数据进行位运算时,系统将两者对齐右端后进行位运算。

以逻辑与运算为例,我们知道在c语言中long型有4个字节,int型有2个字节。 进行某个long型数据和int型数据的逻辑与运算时,如果右边对齐,则左侧的不足位可以通过以下三种情况进行补充。

)1)整数数据为正时,向左添加16个0。 )2)整数数据为负数时,在左边追加16个1。 )3)在整形数据为无符号数的情况下,在左侧也追加16个0。 例如,longa=123; intb=1; 计算ab。 例如,longa=123; intb=-1; 计算ab。

例如,longa=123; unsignedintb=1; 计算ab。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。