常用位操作技巧(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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |