移位运算符
& :按位与,其实与&&逻辑运算符有一致的地方:
| :按位或,同样与||有类似的地方。
~:按位取反
^:按位异或
<<:左移运算符
>>:右移运算符
 
  1.“<<”和“>>”运算符用于执行移位运算,分别称为左移位运算符和右移位运算符。对于X<<N和X>>N形式的运算,含义是将X向左或向右移动N位,得到的结果的类型与X相同。此处,X的类型只能是int,uint、long或ulong,N的类型只能是int,N的类型只能是int,或者显示转换为这些类型之一,否则编译程序时会出现错误。
注意:如果第一个操作数是int或uint(32位数),则移位数有第二个操作数的低5位给出(原因是:低5位可表示的数的范围是0~24+23+22+21+20,即0~31,足够一个       32位数移位使用),如果第一个操作数是long或ulong(64位数),则移位数由第二个操作数的低6位给出(原因同上)。在左移时,第一个操作数的高序位被放弃,低序空位用0填充。移位操作从不导致溢出。
举例:
int值: 128
128转二进制为:1000 0000  
当执行 128>>6时, 二进制首位向右移位6位:1000 0000 -> 0000 0010  ,0000 0010转十进制等于2,所以128>>6的值为:2
同理,128<<6时,二进制首位向左偏移6位:1000 0000 ->10 0000 0000 0000 ,10 0000 0000 0000转十进制等于8192,所以128<<6的值为:8192
 
    2."&" 运算符会对二进制相同位置上面的0和1进行对比,当相同位置数字相同时就返回这个相同的数,否则就返回0,是不是和&&运算符判断两个bool 一致则返回True,否则返回False类似。
    举例:
    int值:96,127
    96&127运算结果是96,如何计算的看下面讲解:   
    96转二进制:  01100000 
    128转二进制:01111111
    用&运算符计算结果:11000000 转十进制=96
 
    3.“|”运算符 的运算方式和"&"运算符判断方式是一样的,只是返回的结果不一样, | 运算符判断两个二进制相同位置的0和1,只要其中一个位置的数字是1就返回1
    举例:
    int值:96,127
    96 | 127运算结果是127,如何计算的看下面讲解:   
    96转二进制:  01100000 
    127转二进制:01111111
    用|运算符计算结果:01111111 转十进制=127
    
    4.“^”运算符 的运算方式是判断位置上面相同的数字时,如果两个数相同,不论是0还是1都返回0,如果其中一个为1就返回1.而 | 是只要有一个只要位置上一个为1就返回1,所以名字叫异或(不同的返回或)。
     举例:
    int值:96,127
    96 ^127运算结果是31,如何计算的看下面讲解:   
    96转二进制:  01100000 
    128转二进制:01111111
    31转二进制:  00011111
    用^运算符计算结果:00011111转十进制=31
 
   

随机推荐

  1. RxJS简介

    函数式编程 1.声明式(Declarativ) 和声明式相对应的编程⽅式叫做命令式编程(ImperativeProgramming),命令式编程也是最常见的⼀种编程⽅式. //命令式编程: funct ...

  2. visualsvn的迁移及svn的一些问题

    从A服务器将visualsvn的内容迁移到B服务器的visualsvn. 1 在B服务器上安装visualsvn 到visualsvn官网https://www.visualsvn.com/下载vis ...

  3. java多线程(8)---阻塞队列

    阻塞队列 再写阻塞列队之前,我写了一篇有关queue集合相关博客,也主要是为这篇做铺垫的. 网址:[java提高]---queue集合  在这篇博客中我们接触的队列都是非阻塞队列,比如Priority ...

  4. jenkins修改数据存放路径

    如果是用tomcat做容器的话,则在./bin/catalina.sh文件添加以下语句即可:export JENKINS_HOME="存放路径(需存在)" 例如:

  5. 【从零开始自制CPU之学习篇04】电容

    电解电容: 多数在1μF以上,直接用数字表示.如:4.7μF.100μF.220μF等等.这种电容的两极有正负之分,长脚是正极. 独石电容: 独石电容器是多层陶瓷电容器的别称, 简称MLCC 读数方法 ...

  6. WebSocket刨根问底(一)

    年初的时候,写过两篇博客介绍在Spring Boot中如何使用WebSocket发送消息[在Spring Boot框架下使用WebSocket实现消息推送][在Spring Boot框架下使用WebS ...

  7. 【Android】打开本地的html文件

    网上好多说法 但实际上说到点上的没有 不想写太长 直接进入正题 Intent intent = new Intent(Intent.ACTION_VIEW); intent.addCategory(I ...

  8. mysql数据库备份并且实现远程复制

    一.实现ssh 远程登陆 机器环境: 192.167.33.108 clent 用户:crawler 192.167.33.77 server 用户:crawler 1.客户端 生成密钥 /home/ ...

  9. 痞子衡嵌入式:微控制器CPU性能测试基准(EEMBC-CoreMark)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是微控制器CPU性能测试基准CoreMark. 在嵌入式系统行业用于评价CPU性能指标的标准主要有三种:Dhrystone.MIPS.Co ...

  10. mac用pecl安装swoole可能出现的报错及解决办法

    一.用pecl安装swoole 2018年4月,由于homebrew的变动,导致无法使用brew install的方式安装php的扩展,现在改为用pecl安装,pecl安装swoole的方法为: pe ...