Aquí es una solución sin usar VBA:
=TEXT(SUMPRODUCT(MOD(INT(MID(A1,{1,2,3,4,5,6,7},1))+INT(MID(A2,{1,2,3,4,5,6,7},1)),2),{1000000,100000,10000,1000,100,10,1}),"0000000")
Este calcula el bit a bit usando XOR
SUMPRODUCT
y TEXT
para convertirlo en una cadena de bits.
Nota: esta fórmula requiere dos valores de entrada para tener una longitud 7 (como por su propio ejemplo) y la salida también tendrá longitud 7. Para permitir diferentes longitudes de entrada, simplemente aplicar el truncamiento y/o material de relleno necesario .
Puede optar por utilizar algunas definiciones abreviadas:
- definen
BitPositions
como ={1,2,3,4,5,6,7}
(7 bits),
- definen
BitStrings
como ={1000000,100000,10000,1000,100,10,1}
(7 bits),
- definir
BitFormat
como ="0000000"
(7-bit),
entonces su fórmula se puede hacer un poco más legible/más corto/Limpiador:
=TEXT(SUMPRODUCT(MOD(INT(MID(A1,BitPositions,1))+INT(MID(A2,BitPositions,1)),2),BitStrings),BitFormat)
Esto también hace que sea más fácil trabajar con cuerdas mayor de bits, por ejemplo:
- definen
BitPositions
como =ROW(INDIRECT("1:32"))
(32-bit),
- definen
BitStrings
como =10^(32-ROW(INDIRECT("1:32")))
(32-bit),
- definen
BitFormat
como =REPT("0",32)
(32-bit)
Si desea implementar NOT
/OR
/AND
/etc. entonces puedes obtener tu inspiración de estos formulas for the decimal counterparts; aquí están some more in-depth explanations para XOR
con SUMPRODUCT
aunque también usa entradas decimales.
¡Gracias! Para otros usuarios, para usar DEC2BIN vaya a Herramientas -> Complementos -> Herramientas de análisis. Para hacer VBA vaya a Herramientas -> Macros -> Editor de Visual Basic –
Un poco tarde en el día, pero como referencia, los operadores bit a bit de VBA también pueden manejar tipos no integrales (interprete el resultado como lo hará) –