Imports System
Module ZeroBitsEveryStepProgram
'
' zeroBitsEveryStep(number, step)
' -------------------------------
' Zeros every `step`-th bit (0-based from LSB)
' but only if that bit is currently 1.
'
' Example:
' number = 536870911
' step = 3 → zero bits 0, 3, 6, 9, ...
'
Function zeroBitsEveryStep(number As Integer, _step As Integer) As Integer
Dim resultValue As Integer = number
For pos As Integer = 0 To 31 Step _step
Dim mask As Integer = 1 << pos
' If the bit is 1, zero it
If (resultValue And mask) <> 0 Then
resultValue = resultValue And Not mask
End If
Next
Return resultValue
End Function
'
' printBinary(n)
' --------------
' Prints a 32-bit binary representation of an integer.
'
Sub printBinary(n As Integer)
Dim s As String = Convert.ToString(n, 2).PadLeft(32, "0"c)
For i As Integer = 0 To 31
Console.Write(s(i))
If (i + 1) Mod 4 = 0 Then Console.Write(" ")
Next
End Sub
Sub Main()
Dim number As Integer = 536870911 ' 0001 1111 1111 1111 1111 1111 1111 1111
Dim stepValue As Integer = 3 ' zero bits 0, 3, 6, 9, ...
Console.WriteLine("Original number in binary:")
printBinary(number)
Dim resultValue As Integer = zeroBitsEveryStep(number, stepValue)
Console.WriteLine()
Console.WriteLine()
Console.WriteLine("Number after zeroing every " & stepValue &
" bits (only if bit was 1):")
printBinary(resultValue)
Console.WriteLine()
Console.WriteLine()
Console.WriteLine("Result as integer: " & resultValue)
End Sub
End Module
'
' run:
'
' Original number in binary:
' 0001 1111 1111 1111 1111 1111 1111 1111
'
' Number after zeroing every 3 bits (only if bit was 1):
' 0001 0110 1101 1011 0110 1101 1011 0110
'
' Result as integer: 383479222
'