How to reverse the bits of a number in VB.NET

1 Answer

0 votes
Imports System
Imports System.Linq

Module BitReverse

    ' Reverse bits using string operations (clear and idiomatic in VB.NET)
    Function ReverseBits(n As Integer, Optional width As Integer = 32) As Integer
        Dim bin = Convert.ToString(n, 2).PadLeft(width, "0"c)
        Dim reversed = New String(bin.Reverse().ToArray())
        Return Convert.ToInt32(reversed, 2)
    End Function

    ' Format bits into 8‑bit groups
    Function Bits(n As Integer, Optional width As Integer = 32) As String
        Dim bin = Convert.ToString(n, 2).PadLeft(width, "0"c)
        Return String.Join(" ", Enumerable.Range(0, width \ 8).
            Select(Function(i) bin.Substring(i * 8, 8)))
    End Function

    Sub Main()
        Dim a As Integer = 19
        Dim b As Integer = 3

        Dim ra As Integer = ReverseBits(a)
        Dim rb As Integer = ReverseBits(b)

        Console.WriteLine("Original 19: " & Bits(a))
        Console.WriteLine("Reversed 19: " & Bits(ra))
        Console.WriteLine()
        Console.WriteLine("Original 3:  " & Bits(b))
        Console.WriteLine("Reversed 3:  " & Bits(rb))
    End Sub

End Module

		
' run:
'
' Original 19: 00000000 00000000 00000000 00010011
' Reversed 19: 11001000 00000000 00000000 00000000
'
' Original 3:  00000000 00000000 00000000 00000011
' Reversed 3:  11000000 00000000 00000000 00000000
'

 



answered Apr 4 by avibootz
...