位运算、移位运算符

本文详细介绍了位运算符(包括与、或、异或、取反)及移位运算符的基本概念与应用场景,例如变量值互换、二进制数字截取等,并解析了各种运算符的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、位(bit)运算符:
位运算符 运算符含义
& 与(AND)
| 或(OR)
^ 异或
~ 取反
规则:
可以把1当做true ,0当做false
只有参与运算的两位都为1,&运算的结果才为1,否则就为0。
只有参加运算的两位都是0,| 运算的结果才是0,否则都是1。
只有参加运算的两位不同,^ 运算的结果才为1,否则就为0。

1、& 与运算
& 参见运算的两位数都为1,&运算符结果才为1,否则就为0。
6&3
00000000 00000000 00000000 00000110 –>6
00000000 00000000 00000000 00000011 –>3
00000000 00000000 00000000 00000010 & =2

2、| 或运算
| 参与运算的两位都为0,|运算的结果才为0,否则就为1。
00000000 00000000 00000000 00000110 –>6
00000000 00000000 00000000 00000011 –>3
00000000 00000000 00000000 00000111 | =7

3、^ 异或运算
^只有参加运算的两位不同,^运算的结果才为1,否则就为0。
00000000 00000000 00000000 00000110 6
00000000 00000000 00000000 00000011 3
00000000 00000000 00000000 00000101 ^ =5

4、~ 反码
就是取反,二进制只有1和0,取反就是如果为1,取反就是0,如果是0,取反就是1。

0000-0000 0000-0000 0000-0000 0000-0110 —->6
1111-1111 1111-1111 1111-1111 1111-1001 取反 -7
System.out.println(~6);//-7
结论:当参与取反的数值是正数时,把对应的值加上负号,再-1;
当参与取反的数值是负数时,把对应的值加上负号,再-1;
负数的表现形式就是对应的正数取反,再加1。负数的最高位肯定是1。

5、异或特点
一个数异或同一个数两次,结果还是那个数. 用处一个简单的加密思想.
6^3^3
0000-0000 0000-0000 0000-0000 0000-0110 6
0000-0000 0000-0000 0000-0000 0000-0011 ^3
0000-0000 0000-0000 0000-0000 0000-0101
0000-0000 0000-0000 0000-0000 0000-0011 ^3
0000-0000 0000-0000 0000-0000 0000-0110 结果是6
如果要证明的话可以先计算后面两个相同数字的^,6^(3^3),两个相同数的异或为0,任何数与0异或为本身

一些用使用位运算的场景:
1、可以是使用&符对一个二进制数字进行截取,使其具有固定的位数
2、对两个变量的值进行互换
这里写图片描述

二、移位运算符
<< 左移 左移就相当于乘以2的位移个数次幂.

右移 右移就相当于除以2的位移个数次幂. 使用>> 后原来是最高位1 的那么空出来的最高位还是1 的,是0的还是0。

无符号右移 如果使用>>> 无论最高位是0还是1 空余最高位都拿0 补,这就是无符号右移

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值