Если бы у вас был метод для обращения битов байта, вы могли бы применить его четыре раза к байту целого числа.Небольшое исследование обнаружило, что Bit Twiddling Hacks .
Module Module1
Sub ShowBits(a As Integer)
Dim aa = BitConverter.GetBytes(a)
Console.WriteLine(String.Join(" ", aa.Select(Function(b) Convert.ToString(b, 2).PadLeft(8, "0"c))))
End Sub
Function ReverseBits(b As Byte) As Byte
' From https://graphics.stanford.edu/~seander/bithacks.html#ReverseByteWith32Bits
Dim c = CULng(b)
Return CByte((((c * &H802UL And &H22110UL) Or (c * &H8020UL And &H88440UL)) * &H10101UL >> 16) And &HFFUL)
End Function
Function ReverseBits(a As Integer) As Integer
Dim bb = BitConverter.GetBytes(a)
Dim cc(3) As Byte
For i = 0 To 3
cc(3 - i) = ReverseBits(bb(i))
Next
Return BitConverter.ToInt32(cc, 0)
End Function
Sub Main()
Dim y = -762334566
ShowBits(y)
y = ReverseBits(y)
ShowBits(y)
Console.ReadLine()
End Sub
End Module
Вывод из тестового значения:
10011010 10110010 10001111 11010010
01001011 11110001 01001101 01011001
Я использовал метод "no 64-bit", потому что оннаписано для языка, где арифметическое переполнение игнорируется - методы, использующие 64-битные операции, полагаются на это, но это не значение по умолчанию для VB.NET.