文档章节

Go语言/golang/位操作/取反/异或/左移/右移

viney
 viney
发布于 2013/07/26 16:12
字数 220
阅读 15003
收藏 11

Go语言位操作实例

<!-- lang: cpp -->
package main

import (
    "fmt"
)

// 获取0-n之间的所有偶数
func even(a int) (array []int) {
    for i := 0; i < a; i++ {
	    if i&1 == 0 { // 位操作符&与C语言中使用方式一样
		    array = append(array, i)
	    }
    }
    return array
}

// 互换两个变量的值
// 不需要使用第三个变量做中间变量
func swap(a, b int) (int, int) {
    a ^= b // 异或等于运算
    b ^= a
    a ^= b
    return a, b
}

// 左移、右移运算
func shifting(a int) int {
    a = a << 1
    a = a >> 1
    return a
}

// 变换符号
func nagation(a int) int {
        // 注意: C语言中是 ~a+1这种方式
    return ^a + 1 // Go语言取反方式和C语言不同,Go语言不支持~符号。
}

func main() {
    fmt.Printf("even: %v\n", even(100))
    a, b := swap(100, 200)
    fmt.Printf("swap: %d\t%d\n", a, b)
    fmt.Printf("shifting: %d\n", shifting(100))
    fmt.Printf("nagation: %d\n", nagation(100))
}

© 著作权归作者所有

viney
粉丝 20
博文 3
码字总数 1218
作品 0
深圳
高级程序员
私信 提问
加载中

评论(2)

viney
viney 博主

引用来自“dyllen”的评论

golang里面这些操作和c语言里面的规则和结果都是一样的吗?C++也是一样的吗?
因为这些东西只在书上看过,实际中没有用过

// 注意: C语言中是 ~a+1这种方式
除了这个和C语言不一样,其它是一样的。C++没试过。
OSC首席键客
OSC首席键客
golang里面这些操作和c语言里面的规则和结果都是一样的吗?C++也是一样的吗?
因为这些东西只在书上看过,实际中没有用过
Python的二进制位运算

Python语言能够对整数进行逐位操作,它支持的运算符及含义如下所示: &:按位与 |:按位或 ^:按位异或 ~:取反 <<:左移 >>:右移 对于整型数据,各种位操作是对该数据的补码进行的(正数的...

zbing3
2013/02/26
0
0
C语言中的位运算与各运算符的用途

学过单片机的人肯定知道,既可以用汇编语言编写单片机程序也可以用C语言来编单片机写程序,其实C语言能支持汇编语言的大部分运算,因此C语言也支持汇编中的按位运算,可以说C语言既有高级语言...

诸葛玥
2018/02/26
0
0
位运算全解,弄懂位运算

位运算是以二进制为单位的运算,其操作数和运算结果都是整数值。 位运算符: & 位与 x&y | 位或 x|y ~ 位非 ~x ^ 位异或 ^x >> 右移 x>>y << 左移 x<>> 无符号右移 x>>>y 除了^为一元其余都为......

翻滚吧李博
2017/11/22
0
0
Java二进制位运算、移位运算>>、>>

Java二进制位运算、移位运算 思考题 1、请看下面的代码段,回答a,b,c,d,e结果是多少? 注:">>"代表算术右移,"<<"代表算术左移,">>>"代表逻辑右移 2、请回答在java中,下面的表达式运算的结......

郑加威
2017/03/09
58
0
go语言学习-位运算

Go语言的大多数位运算符与C语言都比较类似,除了取反在C语言中是~x,而在Go语言中 是^x

solate
2016/07/14
27
0

没有更多内容

加载失败,请刷新页面

加载更多

spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
2
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
昨天
7
0
轻量级 HTTP(s) 代理 TinyProxy

CentOS 下安装 TinyProxy yum install -y tinyproxy 启动、停止、重启 # 启动service tinyproxy start# 停止service tinyproxy stop# 重启service tinyproxy restart 相关配置 默认...

Anoyi
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部