栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Go语⾔基本语法——位运算符

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Go语⾔基本语法——位运算符

位运算符对整数在内存中的⼆进制位进⾏操作。
位运算符⽐⼀般的算术运算符速度要快,⽽且可以实现⼀些算术运算符不能实现
的功能。如果要开发⾼效率程序,位运算符是必不可少的。位运算符⽤来对⼆进
制位进⾏操作,包括:按位与(&)、按位或(|)、按位异或(^)、按位左移(<<)、按位右移(>>)。
假定 A = 60; B = 13; 其⼆进制数转换为:

A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001

Go 语⾔⽀持的位运算符如下表所示。假定 A 为60,B 为13:

运算符描述
&按位与运算符"&"是双⽬运算符。 其功能是参与运算的两数各对应的⼆进位相与。
I按位或运算符"I"是双⽬运算符。 其功能是参与运算的两数各对应的⼆进位相或。
^按位异或运算符"^"是双⽬运算符。 其功能是参与运算的两数各对应的⼆进位相异或,当两对应的⼆进位相异时,结果为1。
<<左移运算符"<<“是双⽬运算符。左移n位就是乘以2的n次⽅。 其功能把”<<“左边的运算数的各⼆进位全部左移若⼲位,由”<<"右边的数指定移动的位数,⾼位丢弃,低位补0。
>>右移运算符">>“是双⽬运算符。右移n位就是除以2的n次⽅。 其功能是把”>>“左边的运算数的各⼆进位全部右移若⼲位,”>>"右边的数指定移动的位数。
  1. 按位与
  • 按位与(&):对两个数进⾏操作,然后返回⼀个新的数,这个数的每个
    位都需要两个输⼊数的同⼀位都为1 时才为1。简单说就是:同⼀位同时为1
    则为1。
  1. 按位或
  • 按位与(|):⽐较两个数,然后返回⼀个新的数,这个数的每⼀位设置1的条件是任意⼀个数的同⼀位为1 则为1。简单说就是:同⼀位其中⼀个为1则为1。
  1. 按位异或
  • 按位异或(^):⽐较两个数,然后返回⼀个数,这个数的每个位设为1 的条件是两个输⼊数的同⼀位不同则为1,如果相同就设为0。简单说就是同⼀
    位不相同则为1。
  1. 左移运算符(<<)
    按⼆进制形式把所有的数字向左移动对应的位数,⾼位移出(舍弃),低位的空位补零。
  • 语法格式:
    • 需要移位的数字 << 移位的次数
    • 例如: 3 << 4,则是将数字3左移4位
  • 计算过程:
    • 3 << 4
    • ⾸先把3转换为⼆进制数字0000 0000 0000 0000 0000 0000 00000011,然后把该数字⾼位(左侧)的两个零移出,其他的数字都朝左平移4位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 00000000 0000 0000 0000 0011 0000,则转换为⼗进制是48。
  • 数学意义:
    • 在数字没有溢出的前提下,对于正数和负数,左移⼀位都相当于乘以2的1次⽅,左移n位就相当于乘以2的n次⽅。
  1. 右移运算符(>>)
    按⼆进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),⾼
    位的空位补符号位,即正数补零,负数补1。
  • 语法格式:
    • 需要移位的数字 >> 移位的次数
    • 例如11 >> 2,则是将数字11右移2位
  • 计算过程:
    • 11的⼆进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在⾼位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010。转换为⼗进制是2。
  • 数学意义:
    • 右移⼀位相当于除2,右移n位相当于除以2的n次⽅。

      以下实例演示了位运算符的⽤法:
package main
import "fmt"
func main() {
     var a uint = 60  
     var b uint = 13 
     var c uint = 0 
     c = a & b 
     fmt.Printf("第⼀⾏ - c 的值为 %dn", c )
     c = a | b 
     fmt.Printf("第⼆⾏ - c 的值为 %dn", c )
     c = a ^ b 
     fmt.Printf("第三⾏ - c 的值为 %dn", c )
     c = a << 2 
     fmt.Printf("第四⾏ - c 的值为 %dn", c )
     c = a >> 2 
     fmt.Printf("第五⾏ - c 的值为 %dn", c )
}

以上实例运⾏结果:

第⼀⾏ - c 的值为 12
第⼆⾏ - c 的值为 61
第三⾏ - c 的值为 49
第四⾏ - c 的值为 240
第五⾏ - c 的值为 15
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/991476.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号