博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用位操作技巧(Golang)
阅读量:5789 次
发布时间:2019-06-18

本文共 991 字,大约阅读时间需要 3 分钟。

hot3.png

1,判断奇偶

for i := 0; i < 100; i++ {if i % 2 == 0 {    println(i)}if i & 0x1 == 0 {    println(i)}

}

2,交换两个数

func Swap(a, b *int) {	if *a^*b != 0 {		temp := *a		*a = *b		*b = temp	}}func Swap(a, b *int) {	if *a^*b != 0 {		*a = *a + *b		*b = *a - *b		*a = *a - *b	}}func Swap(a, b *int) {	if *a^*b != 0 {		*a ^= *b		*b ^= *a		*a ^= *b	}}

3,交换符号

func ExcangeSymbol(a int) (ret int) {	ret = ^a + 1	return}

4,求绝对值

func CalcAbs(a int) (ret int) {    ret = (a ^ a>>31) - a>>31    return}

5,二进制逆序

func ByteReverse(a int) int {    a = ((a & 0xAAAA) >> 1) | ((a & 0x5555) << 1)    a = ((a & 0xCCCC) >> 2) | ((a & 0x3333) << 2)    a = ((a & 0xF0F0) >> 4) | ((a & 0x0F0F) << 4)    a = ((a & 0xFF00) >> 8) | ((a & 0x00FF) << 8)    return a}

6,求1的个数

func CalcOneNum(a int) int {    a = ((a & 0xAAAA) >> 1) + (a & 0x5555)    a = ((a & 0xCCCC) >> 2) + (a & 0x3333)    a = ((a & 0xF0F0) >> 4) + (a & 0x0F0F)    a = ((a & 0xFF00) >> 8) + (a & 0x00FF)    return a}

转载于:https://my.oschina.net/seago123/blog/344763

你可能感兴趣的文章
Windows phone 8 学习笔记
查看>>
linux并发连接数:Linux下高并发socket最大连接数所受的各种限制
查看>>
详解区块链中EOS的作用。
查看>>
我的友情链接
查看>>
mysql-error 1236
查看>>
sshd_config设置参数笔记
查看>>
循序渐进Docker(一)docker简介、安装及docker image管理
查看>>
jsp页面修改后浏览器中不生效
查看>>
大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(四)高效的后台权限判断处理...
查看>>
信号量实现进程同步
查看>>
Spring4-自动装配Beans-通过构造函数参数的数据类型按属性自动装配Bean
查看>>
win10.64位wnmp-nginx1.14.0 + PHP 5. 6.36 + MySQL 5.5.59 环境配置搭建 结合Thinkphp3.2.3
查看>>
如何查看python selenium的api
查看>>
Python_Mix*random模块,time模块,sys模块,os模块
查看>>
iframe刷新问题
查看>>
数据解码互联网行业职位
查看>>
我所见的讲的最容易理解,逻辑最强的五层网络模型,来自大神阮一峰
查看>>
vue-cli项目打包需要修改的路径问题
查看>>
js实现复选框的操作-------Day41
查看>>
数据结构化与保存
查看>>