zoukankan      html  css  js  c++  java
  • 位运算符的含义与使用

    参考:

    https://zhuanlan.zhihu.com/p/404138226(知乎:位运算符的含义)

    https://www.jianshu.com/p/f0dbabf5f08c(简书:运算符的基本使用)

    位运算符

    1,共6种位运算符&,|,^,~,<<,>>,>>>

    2,需要是二进制格式的数据,因为要按位运算

    &

    含义:按位与

    说明:吧参与运算的两个数对应的二进制位相与,只有对应的二进制位均为1时,结果的对应为才为1,否则为0。

    例子:

    9&5相当于00001001&00000101,运算结果为00000001.输出结果是1。

    场景:

    1,判断奇偶性

    |

    含义:按位或

    说明:把参数运算的两个数对应的二进制位相或,只要对应的两个二进制位有一个为1时,其结果就为1.

    例子:

    9|5相当于00001001|00000101,运算结果就是00001101,输出结果是13。
    1|2|4|8相当于0001|0010|0100|1000,运算结果就是00001111,输出结果是15。

    场景:

    1,作为标志位

    ^

    含义:按位异或

    说明:把参数运算的两个数对应的二进制位相异或,对应位上的两个二进制数字不同时,结果为1,否则为0。

    例子:

    1^1=0,1^0=1,0^0=0,0^1=1

    ~

    含义:取反

    说明:把运算数的各个二进制位按位求反

    例子:

    ~9相当于~(0000101),运算结果11110110。输出结果为-10。

    <<

    含义:左移

    说明:m<<n是指把m对应的二进制数的各个二进制位向左移n位,高位丢弃,低位用0补齐。

    例子:

    设a=3,a<<4指把00000011的各二进制位向左移动4位,结果为00110000(十进制48)。

    >>

    含义:右移

    说明:m>>n是指把m对应的二进制数的各二进制位向右移n位,低位丢弃,高位用0补齐,符号被保留。

    例子:

    设a=15,a>>2表示把00001111右移2位,结果为00000011(十进制3)。

    >>>

    含义:无符号右移

    说明:m>>>n是指把m对应的二进制数的各二进制位向右移n位,低位丢弃,高位用0补齐。

    例子:

    19>>>2产生4,因为10011移位2位向右变为100,它是4。对非负数值,补零右移和带符号右移产生相同结果。

    原码、反码、补码

    ·正数的原码、反码、补码相同

    123的原码:00000000 00000000 00000000 01111011
    123的反码:00000000 00000000 00000000 01111011
    123的补码:00000000 00000000 00000000 01111011

    · 负数的原码是按照绝对值转换后,最高位补1;反码是除符号位外,所有位取反;补码为反码加1;

    -123的原码:10000000 00000000 00000000 01111011
    -123的反码:11111111 11111111 11111111 10000100
    -123的补码:11111111 11111111 11111111 10000101

    使用场景

    作为标志位

    举例:

    red = 0001
    blue = 0010
    yellow = 0100
    
    0111:代表红蓝黄
    0101:代表红黄
  • 相关阅读:
    函数声明与函数指针
    【LeetCode】三角形最小路径和
    【LeetCode】字符串中的第一个唯一字符
    【LeetCode】基本计算器II
    【LeetCode】二叉树的最小深度
    【LeetCode】加油站
    java中json与对象的转换
    idea2017 无法使用maven3.6.3版本导入依赖
    springboot项目注册为windows系统服务并设置开机自启
    springmvc上传文件
  • 原文地址:https://www.cnblogs.com/tkzc2013/p/15459246.html
Copyright © 2011-2022 走看看