1 Star 0 Fork 1

brucewang / qlang

forked from landy / qlang 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
bits.go 1.58 KB
一键复制 编辑 原始数据 按行查看 历史
xushiwei 提交于 2016-05-02 02:40 . #55 bits operators
package builtin
// -----------------------------------------------------------------------------
// Lshr returns a << b
//
func Lshr(a, b interface{}) interface{} {
switch a1 := a.(type) {
case int:
switch b1 := b.(type) {
case int:
return a1 << uint(b1)
}
}
return panicUnsupportedOp2("<<", a, b)
}
// Rshr returns a >> b
//
func Rshr(a, b interface{}) interface{} {
switch a1 := a.(type) {
case int:
switch b1 := b.(type) {
case int:
return a1 >> uint(b1)
}
}
return panicUnsupportedOp2(">>", a, b)
}
// Xor returns a ^ b
//
func Xor(a, b interface{}) interface{} {
switch a1 := a.(type) {
case int:
switch b1 := b.(type) {
case int:
return a1 ^ b1
}
}
return panicUnsupportedOp2("^", a, b)
}
// BitAnd returns a & b
//
func BitAnd(a, b interface{}) interface{} {
switch a1 := a.(type) {
case int:
switch b1 := b.(type) {
case int:
return a1 & b1
}
}
return panicUnsupportedOp2("&", a, b)
}
// BitOr returns a | b
//
func BitOr(a, b interface{}) interface{} {
switch a1 := a.(type) {
case int:
switch b1 := b.(type) {
case int:
return a1 | b1
}
}
return panicUnsupportedOp2("|", a, b)
}
// BitNot returns ^a
//
func BitNot(a interface{}) interface{} {
switch a1 := a.(type) {
case int:
return ^a1
}
return panicUnsupportedOp1("^", a)
}
// AndNot returns a &^ b
//
func AndNot(a, b interface{}) interface{} {
switch a1 := a.(type) {
case int:
switch b1 := b.(type) {
case int:
return a1 &^ b1
}
}
return panicUnsupportedOp2("&^", a, b)
}
// -----------------------------------------------------------------------------
Go
1
https://gitee.com/brucewangzhihua1/qlang.git
git@gitee.com:brucewangzhihua1/qlang.git
brucewangzhihua1
qlang
qlang
v2.9.60

搜索帮助