前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >golang的位运算操作符的使用 转

golang的位运算操作符的使用 转

作者头像
henrylee2cn
发布于 2019-04-04 07:25:55
发布于 2019-04-04 07:25:55
1.1K00
代码可运行
举报
文章被收录于专栏:Go实战Go实战
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
&      位运算 AND
|      位运算 OR
^      位运算 XOR
&^     位清空 (AND NOT)
<<     左移
>>     右移

感觉位运算操作符虽然在平时用得并不多,但是在涉及到底层性能优化或者使用某些trick的时候还是比较有意思。

&(AND) |(OR) 就不提了最常用的东西 会编程就会。

&操作的话是当 两个数需要同时为1的时候才会保留。 例如 0000 0100 & 0000 1111 => 0000 0100 => 4

| 操作的话是当 两个数同时为1或者1个为1一个不为1的时候会保留。 例如 0000 0100 | 0000 1111 => 0000 1111 => 15

^(XOR) 在go语言中XOR是作为二元运算符存在的:

但是如果是作为一元运算符出现,他的意思是按位取反,例如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import "fmt"

func main() {
    x := 4
    fmt.Println(^x)
}
output: -5

如果作为二元运算符则是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import "fmt"

func main() {
    x := 4
    y := 2
    fmt.Println(x^y)
}
output: 6

XOR是不进位加法计算,也就是异或计算。0000 0100 + 0000 0010 = 0000 0110 = 6

 &^ (AND NOT)位清空运算和被运算变量位置有关系,先看一个例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import "fmt"

func main() {

    x := 2
    y := 4
    fmt.Println(x&^y)
}
output: 2

x&^y==x&(^y) 首先我们先换算成2进制  0000 0010 &^ 0000 0100 = 0000 0010 如果ybit位上的数是0则取x上对应位置的值, 如果ybit位上为1则结果位上取0

>>右移 <<左移 感觉右移左移应该也是非常常见的使用了 继续看例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import "fmt"

func main() {
    x := 2
    y := 4
    fmt.Println(x<<1)
    fmt.Println(y>>1)
}
output:4 2

进行转化为二进制 然后向左或者向右移动。

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/01/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C语言实例_位操作运算符详解
在C语言中,位操作运算符是一种强大的工具,用于直接对整数进行二进制位级别的操作。这些运算符包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)和右移(>>)。位操作在底层编程、图形处理、加密解密等领域有着广泛的应用。
DS小龙哥
2025/05/27
1190
Go基础系列 | 5. 常量及运算符
对于常量值的数据类型,只可以定义为布尔型、数字型(整数型、浮点型和复数)和字符串型。
潇洒哥和黑大帅
2021/06/24
3780
Go基础系列 | 5. 常量及运算符
Python 位操作符(Bitwise)
按位运算符用于对二进制模式(1和0)执行操作。当您在屏幕上执行2 + 3的整数运算时,计算机将以二进制形式读取它-2表示为10,而3表示为11以二进制格式。因此,您的计算将看起来像10 + 11 = 101
用户7466307
2020/12/15
1.7K0
100天精通Golang(基础入门篇)——第6天: 深入解析Go语言中的运算符
本文将介绍Golang中的各种运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符。我们还将探讨运算符的优先级,以帮助读者更好地理解和使用Golang的运算符。
猫头虎
2024/04/08
1830
100天精通Golang(基础入门篇)——第6天: 深入解析Go语言中的运算符
004.golang 常量与运算符
Go虽然保留了指针,但与其它编程语言不同的是,在Go当中不 支持指针运算以及”->”运算符,而直接采用”.”选择符来操作指针 目标对象的成员
qubianzhong
2018/08/02
4310
004.golang 常量与运算符
【前端算法】只出现一次的数字 II,位运算符:NOT,AND 和 XOR
只出现一次的数字 II image 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,3,2] 输出:3 示例 2: 输入:[0,1,0,1,0,1,99] 输出:99 解题思路 1.遍历输入数组,统计每个数字出现的次数,最后返回出现次数为 1 的数字。 2.位运算符:NOT,AND 和 XOR 解法一 统计次数+筛选 解法比较常规 1.统计每个元
微芒不朽
2022/09/06
4340
【前端算法】只出现一次的数字 II,位运算符:NOT,AND 和 XOR
用位运算为你的程序加速
实现过程也很简单,只需要递归遍历 object 中的数据,然后拼接字符串即可,核心代码如下:
crossoverJie
2022/10/27
3340
用位运算为你的程序加速
Go 运算符
尽管加号运算符通常用于将两个值相加,但它也可以用于将变量和值相加,或者将一个变量和另一个变量相加。
小万哥
2023/09/02
1760
Go 运算符
MySQL(六)之MySQL常用操作符
前言 在前面的MySQL学习中,我们学习了MySQL的安装,管理以及配置,还有是它的DDL。今天给大家分享一下,MySQL的操作符。 千里之行始于足下,做什么事情都要脚踏实地的去做才能做好它。fighting! 一、MySQL操作符   运算符连接表达式中各个操作数,其作用是用来指明对操作数所进行的运算。常见的运算有数学计算、比较运算、位运算以及逻辑运算。   运用运算符可以更加灵活地使用表中的数据,常见的运算符类型有:算术运算符,比较运算符,逻辑运算符,位运算符等。 二、算术运算符     用于各类数值运
用户1195962
2018/01/18
2.1K0
MySQL(六)之MySQL常用操作符
《Java从入门到失业》第三章:基础语法及基本程序结构(3.7):运算符(自增自减、关系运算、逻辑运算、条件运算、位运算、赋值运算、类型转换)
       在程序中,变量的加1、减1操作是经常会碰到的。Java和其他语言一样,给我们提供了自增、自减运算符来方便的完成这些操作。“++”表示自增,“--”表示自减。我们看一个例子:
用户7801119
2020/09/27
8160
Java位运算符:实现高效算法的利器
咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE相关知识点了,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~
bug菌
2024/09/09
1540
Java位运算符:实现高效算法的利器
深入理解位运算符及其在JavaScript中的应用
沉浸式趣谈
2024/03/13
1820
深入理解位运算符及其在JavaScript中的应用
[GO语言基础] 四.算术运算、逻辑运算、赋值运算、位运算及编程练习
作为网络安全初学者,会遇到采用Go语言开发的恶意样本。因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识;另一方面是分享与读者,希望大家一起进步。前文介绍了Golang的变量、数据类型和标识符知识,并通过12道编程练习进行提升。这篇文章将介绍运算,包括算术运算、逻辑运算、赋值运算、位运算及编程练习。 这系列文章入门部分将参考“尚硅谷”韩顺平老师的视频和书籍《GO高级编程》,详见参考文献,并结合作者多年的编程经验进行学习和丰富,且看且珍惜吧!后续会结合网络安全进行GO语言实战深入,加油~
Eastmount
2021/03/01
8120
[GO语言基础] 四.算术运算、逻辑运算、赋值运算、位运算及编程练习
Java &、&&、|、||、^、<<、>>、~、>>>等运算符
无符号右移运算符和右移运算符的主要区别在于负数的计算,因为无符号右移是高位补0,移多少位补多少个0。
萬物並作吾以觀復
2018/09/13
173.7K4
Java &、&&、|、||、^、<<、>>、~、>>>等运算符
【C++算法/学习】位运算详解
位运算(Bit Operation):在计算机内部,数是以「二进制(Binary)」的形式来进行存储。位运算就是直接对数的二进制进行计算操作,在程序中使用位运算进行操作,会大大提高程序的性能。
IsLand1314
2024/10/15
1630
【C++算法/学习】位运算详解
Datawhale组队学习 -- Task 1:变量、运算符、数据类型及位运算
代码中的注释经常用来表达代码内容的含义或者保存一些不执行但要保留的代码进行对比查看
余生大大
2022/11/02
3220
Datawhale组队学习 -- Task 1:变量、运算符、数据类型及位运算
Java编程(位运算符)
二进制运算符   由于计算机内部的数据都以二进制的形式存在,所以在Java语言中提供了直接操作二进制的运算符,这就是下面要讲解的位运算符和移位运算符。   使用二进制的运算符,可以直接在二进制的基础上对数字进行操作,执行的效率比一般的数学运算符高的多,该类运算符大量适用于网络编程、硬件编程等领域。   二进制运算符在数学上的意义比较有限。   在Java代码中,直接书写和输出的数值默认是十进制,Java代码中无法直接书写二进制数值,但是可以书写八进制和十六进制数字,八进制以数字0开头,例如016,十六进制以
cloudskyme
2018/03/20
1.3K0
整型及相关运算符 【Go语言圣经笔记】
Go语言的数值类型包括几种不同大小的整数、浮点数和复数。每种数值类型都决定了对应的大小范围和是否支持正负符号。让我们先从整数类型开始介绍。
Steve Wang
2021/12/06
1.1K0
计算机基础之位运算 | 按位取反
程序中的所有数在计算机内存中都是以二进制的形式储存的。位操作是程序设计中对位模式或二进制数的一元和二元操作。在许多古老的微处理器上,位运算比加减运算略快,通常位运算比乘除法运算要快很多。在现代架构中,情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算)。(摘自维基百科)
宋天伦
2020/08/10
6.7K0
进制转换以及位运算
1011 = 1 * 1 + 1 * 2 + 0 * 4 + 1 * 8 = 1 + 2 + 0 + 8 = 11
甜点cc
2022/11/07
8280
进制转换以及位运算
推荐阅读
相关推荐
C语言实例_位操作运算符详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验