How to set specific bits and find the set bits indexes in Go

1 Answer

0 votes
package main

import (
    "fmt"
    "strconv"
)

const bitSize = 16

// Print binary representation of the bits
func printBinary(bits uint16) {
    binary := strconv.FormatUint(uint64(bits), 2)
    fmt.Println(fmt.Sprintf("%0*s", bitSize, binary))
}

// Find the first set bit (least significant)
func findFirstSetBit(bits uint16) int {
    for i := 0; i < bitSize; i++ {
        if bits & (1 << i) != 0 {
            return i
        }
    }
    return -1 // No bits set
}

func printSetBitIndexes(bits uint16) {
    for i := 0; i < bitSize; i++ {
        if bits & (1 << i) != 0 {
            fmt.Printf("%d ", i)
        }
    }
    fmt.Println()
}

func main() {
    var bits uint16 = 0
    
    bits |= 1 << 3
    bits |= 1 << 5
    bits |= 1 << 11
    bits |= 1 << 14

    printBinary(bits)
    fmt.Println("First set bit at index:", findFirstSetBit(bits))
    
    fmt.Println("All the set bits indexes:")
    printSetBitIndexes(bits)
}

 

/*
run:

0100100000101000
First set bit at index: 3
All the set bits indexes:
3 5 11 14 

*/

 



answered Nov 3, 2025 by avibootz
...