Golang的运算符-位运算符

                             作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.位运算符概述

  常见的位逻辑运算符:
    &:
      位与运算符,表示AND(表示所有条件都得匹配),运算规则为相同位都是1时结果才为1,不同则为0。举个例子:如"5 & 7",结果为5。
      计算过程为:我们用一个字节来表示一个数字,5转换成二进制为0000 ,7转换成二进制为0000 ,此时做位与运算,相同位都是1时结果才为1,最终得到结果二进制结果0000 ,使用十进制表示为5。     |:
      位或运算符,表示OR(表示有一个条件匹配即可),运算规则为相同位只要一个为1则为1。举个例子:如"5 | 7",结果为7。
      计算过程为:我们用一个字节来表示一个数字,5转换成二进制为0000 ,7转换成二进制为0000 ,此时做位或运算,相同位只要一个为1时结果才为1,最终得到结果0000 。使用十进制表示为7。     ^:
      位异或运算符,表示XOR,运算规则为相同位不同则为1,相同则为0。举个例子:如"5 ^ 7",结果为2。
      计算过程为:我们用一个字节来表示一个数字,5转换成二进制为0000 ,7转换成二进制为0000 ,此时做位异或运算,相同位不同则为1,相同则为0,最终得到结果0000 。使用十进制表示为2。
    &^:
      位清空运算符,表示AND NOT,运算规则为后数为0,则用前数对应位代替,后数为1则取0。举个例子:如"5 ^ 7",结果为0。
      计算过程为:我们用一个字节来表示一个数字,5转换成二进制为0000 ,7转换成二进制为0000 ,此时做位清空运算符,为后数为0,则用前数对应位代替,后数为1则取0,最终得到结果0000 0000。使用十进制表示为0。
  
  常见的位移运算符:
    <<:
      左移,表示将对应的二进制数字向左移动相应的位数,比如 << ,结果为40。
      计算过程为:我们用一个字节来表示一个数字,5转换成二进制为0000 ,将二进制数字向左位移3位得到0010 ,使用十进制表示为""。
    >>:
      右移,表示将对应的二进制数字向右移动相应的位数,比如 >> ,结果为1。
      计算过程为:我们用一个字节来表示一个数字,5转换成二进制为0000 ,将二进制数字向左位移3位得到0000 ,使用十进制表示为""。

二.位运算符实战案例

1>.位逻辑运算符案例

package main

import (
"fmt"
) func main() { a := //对应二进制为: 0000 0101
b := //对应二进制为: 0000 0111 fmt.Printf("变量a对应的二进制值是:[%b]\n", a)
fmt.Printf("变量b对应的二进制值是:[%b]\n", b) /*
&:
位与运算符,表示AND(表示所有条件都得匹配),运算规则为相同位都是1时结果才为1,不同则为0。举个例子:如"5 & 7",结果为5。 |:
位或运算符,表示OR(表示有一个条件匹配即可),运算规则为相同位只要一个为1则为1。举个例子:如"5 | 7",结果为7。   ^:
    位异或运算符,表示XOR,运算规则为相同位不同则为1,相同则为0。举个例子:如"5 ^ 7",结果为2。   &^:
    位清空运算符,表示AND NOT,运算规则为后数为0,则用前数对应位代替,后数为1则取0。举个例子:如"5 ^ 7",结果为0。
*/
fmt.Printf("a & b = [%d]\n", (a & b))
fmt.Printf("a | b = [%d]\n", (a | b))
fmt.Printf("a ^ b = [%d]\n", (a ^ b))
fmt.Printf("a &^ b = [%d]\n", (a &^ b)) }

2>.位移运算符

package main

import (
"fmt"
) func main() { a := //对应二进制为: 0000 0101 fmt.Printf("变量a对应的二进制值是:[%b]\n", a) /*
<<:
左移,表示将对应的二进制数字向左移动相应的位数,比如 5 << 3,结果为40。 >>:
右移,表示将对应的二进制数字向右移动相应的位数,比如 5 >> 3,结果为1。
*/ fmt.Printf("5 << 3 = [%d]\n", <<)
fmt.Printf("5 >> 3 = [%d]\n", >>) }

Golang的运算符-位运算符的更多相关文章

  1. PHP中的运算符---位运算符、递增递减运算符、三元运算符、字符串运算符、数组运算符、类型运算符、错误控制运算符

    1.位运算符 位运算符用来对整型数的指定位进行置位,如果被操作数是字符串,则对该字符串的ASCII码值进行操作. 运算类型 运算符 举例 结果 按位与 & $a & $b 将$a 与 ...

  2. javascript运算符——位运算符

    × 目录 [1]二进制 [2]非 [3]与[4]或[5]异或[6]左移[7]右移[8]>>>[9]应用 前面的话 位运算符是非常底层的运算,由于其很不直观,所以并不常用.但是,其速度 ...

  3. java入门---运算符&算术运算符&自增自减运算符&关系运算符&位运算符

        计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 ...

  4. 【Python】2.16学习笔记 运算符,位运算符,if-else语句

    复合运算符 a *= b # a = a * b a += b # a = a + b a -= b # a = a - b ... 位运算符 对数字进行二进制运算 按位与 &,二进制位都为一 ...

  5. 【java从入门到精通】day-07-逻辑运算符-位运算符-条件运算符-扩展赋值运算符

    逻辑与(&&).或(||).非(!) 示例: package operator;​public class Demo05 {    public static void main(St ...

  6. 位运算符 & | ~ ^ << >>

    # ### 位运算符 & | ~ ^ << >> var1 = 19 var2 = 15 # & 按位与 """ res = va ...

  7. PHP 位运算符

    位运算符 位运算符是指对二进制位从低位到高位对齐后进行运算. 符号 作用 举例 个人理解 & 按位与 $m & $n 全1为1,否则为0 | 按位或 $m | $n 全0为0,有1为1 ...

  8. 换个语言学一下 Golang (5)——运算符

    运算符用于在程序运行时执行数学或逻辑运算. Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 接下来让我们来详细看看各个运算符的介绍. 算术运算符 下表 ...

  9. C语言的各种位运算符的操作简述

    运算符: 算术运算符: + , - , * , / , % , ++ , -- 符合运算符: += , *= , /= , %= 条件运算符:  ? : 关系运算符: == , >= , < ...

随机推荐

  1. 代码审计变成CTF

    0x01 代码审计中的信息收集 一个cms代码量确实不少,通读代码耗时长,效果也不一定好.而一个功能点如果之前出过漏洞,特别是多次出现漏洞的地方,证明开发者对这个漏洞的理解不充分,很容易再次绕过补丁. ...

  2. Electron调用C++的DLL

    1. 安装ffi-napi npm install ffi-napi   2. c++ dll 注意,若electron是X64的,则dll也应为X64,同理32位. myAddDll是c++的dll ...

  3. SpringSecurity-权限关联与控制

    6.3 服务器端方法级权限控制 在服务器端我们可以通过Spring security提供的注解对方法来进行权限控制.Spring Security在方法的权限控制上 支持三种类型的注解,JSR-250 ...

  4. 「AMPPZ2014」The Captain

    传送门: 这是一道bzoj权限题 Luogu团队题链接 解题思路 直接连边的话边数肯定会爆炸,考虑减少边数. 我们画出坐标系,发现一个东西: 对于两个点 \(A,B\),\(|x_A-y_A|\) 可 ...

  5. python3 使用selenium +webdriver打开chrome失败,报错:FileNotFoundError: [Errno 2] No such file or directory: 'chromedriver': 'chromedriver'

    提示chrome driver没有放置在正确的路径下 解决方法: 1.chromedriver与chrome各版本及下载地址 驱动的下载地址如下: http://chromedriver.storag ...

  6. 2020年java架构师是什么-java架构师基本要求

    Java系统架构师是一个既必须掌控整体又必须洞察部分瓶颈并根据实际的业务流程情景得出解决方法的团队领导型角色.一个架构师得必须充足的创造力,可以各种各样目标要求开展不一样层面的拓展,为目标顾客出示更加 ...

  7. 【快学springboot】14.操作redis之list

    前言 之前讲解了springboot(StringRedisTemplate)操作redis的string数据结构,这篇文章将会讲解list数据结构 list数据结构具有的操作 下图列出了redis ...

  8. Press Key关键字用法

    语法:Press Key  locator   按键编码 press key关键字后面的键位对应ascii码实际为16进制格式 NULL = '\ue000'CANCEL = '\ue001'  # ...

  9. A. You Are Given Two Binary Strings…

    A. You Are Given Two Binary Strings… You are given two binary strings x and y, which are binary repr ...

  10. PAT B1019/A1069 数字黑洞

    给定任一个各位数字不完全相同的四位正整数,如果先把四个数字按照非递增排序,再按照非递减排序,然后用第一个数字减第二个数字,将得到一个新的数字,一直重复这样做,很快就会停在有“数字黑洞”之称的6147, ...