理论教育 程序设计基础中的位运算符及运行结果

程序设计基础中的位运算符及运行结果

时间:2023-11-20 理论教育 版权反馈
【摘要】:位运算符用于对二进制数值的位进行操作,包括移位运算符和按位运算符两种。表4-6 移位运算符移位运算符常用于直接设置二进制位,此时每一位都有其具体的含义。程序运行结果:运行结果分析:2.按位运算符按位运算符对二进制数的每一位分别进行逻辑操作,Java提供了4种按位运算符,如表4-7所示。通过按位运算符可以方便地设置、修改、访问每个二进制标志位的状态。

程序设计基础中的位运算符及运行结果

位运算符用于对二进制数值的位进行操作,包括移位运算符和按位运算符两种。

1.移位运算符

移位运算是将二进制数向左或向右移位。移位运算符有以下3种,如表4-6所示。

表4-6 移位运算符

978-7-111-34450-6-Chapter04-30.jpg

移位运算符常用于直接设置二进制位,此时每一位都有其具体的含义。进行移位运算的二进制数通常有特殊的意义,并不一定表示为一个整数,因此带符号右移就失去了意义,而应当使用无符号右移符“>>>”。

【例4-6】移位运算。

978-7-111-34450-6-Chapter04-31.jpg

程序运行结果:

978-7-111-34450-6-Chapter04-32.jpg

运行结果分析:

978-7-111-34450-6-Chapter04-33.jpg

2.按位运算符

按位运算符对二进制数的每一位分别进行逻辑操作,Java提供了4种按位运算符,如表4-7所示。

表4-7 按位运算符

978-7-111-34450-6-Chapter04-34.jpg

1)“&”运算符对操作数进行按位“与”运算。当二进制数位与0相与时被置0;与1相与时数位值保持不变。

例如1010&1101,计算如下:

978-7-111-34450-6-Chapter04-35.jpg

二进制数1010和1101按位与的结果是将右边第2位置0,其他位不变,因此“&”运算符常用于将某个数位与0相与进行清0的操作。

2)“|”运算符对操作数进行按位“或”运算。当二进制数位与1相或时被置1;与0相或时数位值保持不变。

例如计算1010|0001的结果如下。

978-7-111-34450-6-Chapter04-36.jpg

二进制数1010和0001按位“或”操作之后,右边第1位被置1,其他位不变。因此“|”运算符常用于将某个数位与1相或进行置1的操作。(www.daowen.com)

3)“∧”运算符对操作数进行按位“异或”运算。两个操作数的对应数位的值不同时,异或的结果为1;两个操作数的对应数位的值相同时,异或的结果为0。

例如1010∧1100的结果:

978-7-111-34450-6-Chapter04-37.jpg

与1100异或的结果是前两位数位被取反,由10变成01。后两位数位保持不变。因此“∧”运算符常用于将某些数位的值与1异或而将其值进行取反,与0异或则保持该数位的值不变。

如果将1010∧1100的结果0110再次和1100异或,则可以得到原来的值1010。可以使用异或的方法,对一些数字进行简单的加密和解密操作。解密的操作为:

978-7-111-34450-6-Chapter04-38.jpg

4)“~”是按位运算符中唯一的一元运算符,它的作用是将二进制数的每一位取补,也就是将1取补为0,将0取补为1。例如:

978-7-111-34450-6-Chapter04-39.jpg

按位运算符所运算的数值虽然是整型数,但一般不作为数值计算来使用,而多是用来对逻辑标志进行设置,比如对某个二进制位进行置0、置1或取反。通过按位运算符可以方便地设置、修改、访问每个二进制标志位的状态。

下面是使用位运算符的几个操作技巧。

假设变量x为int整型数。

1)将x的二进制值保留最低6位:x&0x003f。

2)将x的二进制值最低5位清0:x&~0x001f。

3)将x的二进制值最低4位置1:x|0x000f。

4)将x的二进制值最低3位取反:x∧0x0007。

5)取出x的二进制值最右边一个1的位值:((x-1)∧x)&x。

6)当x&1==0时,x为偶数;当x&1==1时,x为奇数。

7)取出x第k位的值:x>>k&1。

8)将x的第k位清0:x&~(1<<k)。

9)将x的第k位置1:x|(1<<k)。

10)将x循环左移k次:x<<k|x>>32-k(32,int类型为32位二进制数)。

11)将x的最低的n个数位置为1,其余数位置为0:x=~(~0<<n)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈