Solo realiza una mascara desde A de longitud B, en ningun momento cambio el valor de esos bits, es decir, en ningun momento los recorro a la derecha:
11111111000000001111111100000000 con a = 8, b = 8
return:
00000000000000001111111100000000
para que quede igual que la tuya solo le falta dos pasos una potencia y una divicion:
Yo cuento por NORMA y por que asi esta en definicion como 0 el menos significativo es decir el que esta a la derecha y tu lo haces alreves...
Dulces Lunas!¡.
11111111000000001111111100000000 con a = 8, b = 8
return:
00000000000000001111111100000000
para que quede igual que la tuya solo le falta dos pasos una potencia y una divicion:
Código (Vb) [Seleccionar]
Private Sub Form_Load()
MsgBox midBits32(&HFF00FF00, 8, 8) \ 2 ^ 8
MsgBox midBits32(&HFF00FF00, 24, 8) \ 2 ^ 24
MsgBox midBits32(&HFF00FF00, 31, 1) \ 2 ^ 31 ' // aqui saltara error debido a el 2 potencia 31 = -1
End Sub
Yo cuento por NORMA y por que asi esta en definicion como 0 el menos significativo es decir el que esta a la derecha y tu lo haces alreves...
Código (Vb) [Seleccionar]
Private Sub Form_Load()
MsgBox midBits32(&HFF00FF00, 8, 8) \ 2 ^ 8
MsgBox midBits32(&HFF00FF00, 24, 8) \ 2 ^ 24
MsgBox midBits32(&HFF00FF00, 30, 1) \ 2 ^ 30
MsgBox MidBit(&HFF00FF00, 8, 8)
MsgBox MidBit(&HFF00FF00, 24, 8)
MsgBox MidBit(&HFF00FF00, 30, 1)
End Sub
Dulces Lunas!¡.