美文网首页
位运算符

位运算符

作者: 张轻舟 | 来源:发表于2018-10-31 21:11 被阅读0次

位运算符有哪些?

& 位与
| 位或
^ 位异或
~ 取反
>> 向右移
>>> 无符号右移
<< 向左移

位运算符都是操作的二进制

用法
&,|,^,~ 的用法

&:有0则0
|:有1则1
^:相同则0,不同则1
~:按位取反

例:

System.out.println(6 & 3);                //2
System.out.println(6 | 3);                //7
System.out.println(6 ^ 3);                //5    
System.out.println(~6);                    //-7?    

分析:

上面这些运算符会将数字转换成2进制再进行运算。6的二进制是110,3的二进制是011。根据上面的用法规则里面,列几个竖式:

110
011
———–
010     &计算出十进制的2

110
011
———–
111    |计算出十进制的7

110
011
———–
101      ^计算出十进制的5

00000000 00000000 00000000 00000110 6的原码反码补码都是本身
11111111 11111111 11111111 11111001 对6取反,得到-7的补码
00000000 00000000 00000000 00000001 补码减1
——————————————————————————
11111111 11111111 11111111 11111000 反码
10000000 00000000 00000000 00000111 原码(-7)

^的特点:一个数据对另一个数据位异或两次,该数本身不变。

例:

System.out.println(5 ^ 10 ^ 5);
左移和右移

<<:左移    左边最高位丢弃,右边补齐0
>>:右移    最高位是0,左边补齐0;最高为是1,左边补齐1
>>>:无符号右移 无论最高位是0还是1,左边补齐0
例:

    //右移,向右移动n位就是除以2的n次幂,向左移动n位就是乘以2的n次幂
    System.out.println(12 >> 1);
    System.out.println(12 >> 2);
    System.out.println(12 << 1);        //24
    System.out.println(12 << 2);        //48

小练习

1、请实现两个整数变量的交换(不能使用第三方变量)
2、最有效率的算出2 * 8的结果

答案分析

1、实现两个整数变量的交换很简单,但是这道题目却明确指出不能使用第三方变量。有两种方法。
方法一:

int a = 20;
int b = 10;
a = a + b;
b = a - b;
a = a - b;

方法一有个缺点,如果数值超出了int类型的取值范围,将会损失精度

方法二:

    int a = 20;
    int b = 10;
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;

2、直接操作二进制是比较快的,所以使用左移符号

System.out.println(2 << 3);

相关文章

  • 强大的位运算符

    位取反运算符 位取反运算符(~)是对所有位的数字进行取反操作位取反运算符.png 位与运算符 位与运算符(&)可以...

  • 开发基础随笔之位运算符(Bitwise Operators)

    位运算符,属于算术运算符 按位逻辑运算符: 位移运算符: 位运算符的运算数只能是整数 位移运算符:按位左移 a<<...

  • 位运算符

    位取反运算符 位取反运算符(~)是对所有位的数字进行取反操作 位与运算符 位与运算符(&)可以对两个数的比特位进行...

  • 基础运算符

    [使1. 按位与运算符(&](#1. 按位与运算符(&)[按位或运算符 | ](#2. 按位或运算符(|)) 1....

  • python学习第二天 基础知识二

    运算符 +、-、、/、//(整除)、*(幂运算符)、%(取余) 输出结果 位运算符 &位与,|位或,左移<<,右移...

  • 高级运算符(Advanced Operators)

    目录 [toc] 位运算符 1. 按位取反运算符~ 2. 按位与运算符& 3. 按位或运算符| 4. 按位异或运算...

  • python运算符

    Python算数运算符 Python比较运算符 Python赋值运算符 Python位运算符 按位运算符是把数字看...

  • 位运算符

    位取反运算符 取反翻运算符 ~ 是对所有位的数字进行取反操作0 变 11 变 0 位与运算符 位与运算符 & 可以...

  • Python基础之位运算符(含原码反码补码的通俗解释)

    目录 1 二进制 2 原码、反码、补码 3 位运算符 4 位运算符使用技巧 上回学习运算符时,漏了位运算符,因为位...

  • swift-位运算符

    1. 位取反运算符( ~ ) 位取反运算符(~ )是对所有位的数字进行取反操作 2. 位与运算符( &) 位与运算...

网友评论

      本文标题:位运算符

      本文链接:https://www.haomeiwen.com/subject/zceztqtx.html