🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
> # 位运算 位运算可以用来表示并组合不同的状态。针对你提到的几种情况,我们可以给它们分配不同的二进制位,然后使用位运算进行组合。假设我们有 6 种情况,用 6 个二进制位来表示它们: 1. **天地/地天板**:`000001` 2. **换手板涨/跌停**:`000010` 3. **放量涨/跌停**:`000100` 4. **缩量涨/跌停**:`001000` 5. **T字/倒T**:`010000` 6. **一字涨/跌停**:`100000` 每种情况对应一个二进制位,使用位运算可以进行组合。例如: * **天地板 + 换手板涨停**:`000001 | 000010` -> `000011` * **放量跌停 + 缩量涨停**:`000100 | 001000` -> `001100` * **一字涨停 + 换手板涨停**:`100000 | 000010` -> `100010` 通过这样的位运算组合,可以高效地表示和检测多个状态。 > # 数据库查找 ~~~ package main import ( "fmt" "math" ) // 查找包含指定类型的所有数值 func findValuesWithTypes(typeValues []int, bitCount int, logicOp string) []int { var results []int maxValue := int(math.Pow(2, float64(bitCount))) - 1 for i := 0; i <= maxValue; i++ { match := false for _, t := range typeValues { if logicOp == "AND" { if (i & t) == t { match = true } else { match = false break } } else if logicOp == "OR" { if (i & t) > 0 { match = true break } } } if match { results = append(results, i) } } return results } func main() { // 示例:查找包含类型 [2, 4] 的所有 8 位二进制数值(使用 AND 运算) typeValues := []int{2, 3} // 类型数值数组 bitCount := 3 // 二进制位数(例如 8 位) logicOp := "OR" // 逻辑运算:AND 或 OR values := findValuesWithTypes(typeValues, bitCount, logicOp) fmt.Println("Values containing the types:", values) } ~~~