加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

常用位操作技巧(Golang)

发布时间:2020-12-16 19:25:40 所属栏目:大数据 来源:网络整理
导读:1,判断奇偶 fori:=0;i100;i++{ifi%2==0{println(i)}ifi0x1==0{println(i)}} 2,交换两个数 funcSwap(a,b*int){if*a^*b!=0{temp:=*a*a=*b*b=temp}}funcSwap(a,b*int){if*a^*b!=0{*a=*a+*b*b=*a-*b*a=*a-*b}}funcSwap(a,b*int){if*a^*b!=0{*a^=*b*b^=*a*a^=*b}

1,判断奇偶

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

2,交换两个数

funcSwap(a,b*int){
	if*a^*b!=0{
		temp:=*a
		*a=*b
		*b=temp
	}
}

funcSwap(a,b*int){
	if*a^*b!=0{
		*a=*a+*b
		*b=*a-*b
		*a=*a-*b
	}
}

funcSwap(a,b*int){
	if*a^*b!=0{
		*a^=*b
		*b^=*a
		*a^=*b
	}
}

3,交换符号

funcExcangeSymbol(aint)(retint){
	ret=^a+1
	return
}

4,求绝对值

funcCalcAbs(aint)(retint){
ret=(a^a>>31)-a>>31
return
}

5,二进制逆序

funcByteReverse(aint)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)
returna
}

6,求1的个数

funcCalcOneNum(aint)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)
returna
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读