Son matemáticas simples...
Todo aquel que se dedique a programar, una de las primeras cosas que debiera aprender es precisamente a operar con bits...
En NET (y otro muchos lenguajes), que aceptan operaciones de desplazamiento (heredadas del ensamblador), resultan más sencillas (y veloces)... aqui resuelto con division.
235 = bin: 1110.1011
Bitset(235, 3, 4) Resultado 13
marcando la separacion de bits filtrados: 1'1101'011
Los 3 bits de menor peso, se pierden al dividir por 8.
El bit alto se pierde al enmascarar con 15: (11101 and 1111)
p.d.: en tu caso como precisas los bits 5 y 6
Todo aquel que se dedique a programar, una de las primeras cosas que debiera aprender es precisamente a operar con bits...
En NET (y otro muchos lenguajes), que aceptan operaciones de desplazamiento (heredadas del ensamblador), resultan más sencillas (y veloces)... aqui resuelto con division.
Código [Seleccionar]
// Valor: el byte a procesar.
// Indice: punto desde el cual nos interesan los bits (rango 0-7) .
// Bits: Cantidad de bits que queremos tomar del byte.
byte = funcion BitSet(byte valor, byte indice, byte bits )
valor = (valor / (2 ^ indice)) ' retira los 'indice' bits de 'abajo'
devolver (valor And ((2 ^ bits) - 1)) ' retira los bits de 'arriba'.
End Function
235 = bin: 1110.1011
Bitset(235, 3, 4) Resultado 13
marcando la separacion de bits filtrados: 1'1101'011
Los 3 bits de menor peso, se pierden al dividir por 8.
El bit alto se pierde al enmascarar con 15: (11101 and 1111)
p.d.: en tu caso como precisas los bits 5 y 6
Código [Seleccionar]
...
avr = bitSet(valor, 5,2)
Si (avr= 0) // o un switch...
normal
O si (avr= 1)
boost one stage
O Si (avr= 2)
boost two stages
Y Si No // 3
buck one stag
fin si