【GoLang】与或非 异或操作
在Go规范,^这个运算符在一元运算符和二元运算符中都出现了。那么他们分别是啥?
在规范中说道:^ bitwise XOR integers
这是按位异或。
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))
}
https://my.oschina.net/viney/blog/147311
http://bbs.studygolang.com/forum.php?mod=viewthread&tid=52&extra=
【GoLang】与或非 异或操作的更多相关文章
- 君子性非异也,善假于物也 - Threejs 引入TrackballControls 查看场景
君子性非异也,善假于物也 - Threejs 引入TrackballControls 查看场景 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循" ...
- C++ 中的异或操作^
好好的利用异或能够产生奇妙的效果. 异或运算的性质: 不论什么一个数字异或它自己都等于0.也就是说.假设我们从头到尾依次异或数组中的每个数字,那么终于的结果刚好是那个仅仅出现一次的数字.由于那些出现两 ...
- 【js】Leetcode每日一题-数组异或操作
[js]Leetcode每日一题-数组异或操作 [题目描述] 给你两个整数,n 和 start . 数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == ...
- python实现图片色素的数值运算(加减乘除)和逻辑运算(与或非异或)
目录: (一)数值运算(加减乘除) (二)逻辑运算(与或非异或) 正文: (一)数值运算(加减乘除) opencv自带图片色素的处理函数------相加:add() 相减:subtract() ...
- java 中与 或 非 异或 和位移运算
与(&) 或(|) 异或(^) 和位移(>>,<<) 通常和符号位无关 .. 但是非比较特殊,与符号位有关,所以计算的时候要考虑符号位 先扩展为32字符,前16位为符号 ...
- 位运算之 C 与或非异或
与运算:& 两者都为1为1,否则为0 1&1=1, 1&0=0, 0&1=0, 0&0=0 或运算:| 两者都为0为0,否则为1 1|1 = 1, ...
- 原码,反码,补码 与(&) 或(|) 非(~) 异或(^) 左移 << 右移 >> 无符号右移 >>>
原码 数字在计算机中以二进制表示,8位的字长,最高位是符号位, 正数为0,负数为1.比如,3为0000 0011: -3为1000 0011. 注意,Java中int为32位.3的16进制表示为3,- ...
- java 与 或 非 异或 & | ~ ^
1.与运算符 & 两个操作数中位,否则结果为0 2.或运算符 | 两个位,否则就为0 3.非运算符 ~ 如果位为,结果是,如果位为1,结果是0 4.异或运算符 ^ 两个操作数的位中,,不同则结 ...
- 如何让Enum枚举实现异或操作
var flag = Week.Monday; flag = flag | Week.Wednesday; if ((flag & Week.Monday) == Week.Monday ) ...
随机推荐
- Python之路【第三篇补充】:Python基础(三)
参考老师:http://www.cnblogs.com/wupeiqi lambda表达式 学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: # 普通条件语句 if 1 ...
- thinkphp-许愿墙-2
在数组中,也可以使用函数,如: $data = array( 'username'=> I('username','', 'htmlspecailchars'), 'content'=> ...
- PHP实现各种经典算法
<? //-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_s ...
- oracle中一些用法总结
1. case用法: --简单case函数 case sex when '1' then 'boy' when '2' then 'girl' else '其他' end; --case搜索函数 ca ...
- Django 部署
话说这个部署挺折腾人的,先开始使用 mod_python ,貌似版本一直有问题,没成功过,以后再试. 使用 mod_wsgi 成功,记录如下: 1.下载 mod_wsgi: http://code.g ...
- [译]git checkout
git checkout git checkout提供3种不同的功能: checking out文件, checking out commits, checking out branch. check ...
- Express开发实例(1) —— Hello,world!
Express是NodeJs开发中最常用的基础模块.NodeJs本身有Http模块,但是易用性并不好,因此有人在此基础上开发了Express模块. 什么是express express提供了丰富的路由 ...
- tc 146 2 BridgeCrossing(n人过桥问题)
SRM 146 2 1000BridgeCrossing Problem Statement A well-known riddle goes like this: Four people are c ...
- mongodb university week4
1.index Creation,background 如果在foreground运行index,会阻塞其他writer,如果background运行,会比较慢,但不会阻塞其他writer,可以并发写 ...
- HDU 5592
原题: http://acm.hdu.edu.cn/showproblem.php?pid=5592 线段树的变形,先说思路. 题目中给出了当前节点之前的逆序对数,则p[i]-p[i-1]就是对于p[ ...