He estado buscando en algunos circuitos integrados ahora. Algunos de ellos tienen el resultado calculado (datos) en forma de complemento a dos, colocados en el registro para ser leídos por otro IC. ¿Cuál es la lógica detrás de convertir los datos en complemento a dos antes de leerlos?
Los ejemplos son como
He visto un comportamiento similar en el cálculo de CRC para IEEE 802.3. Por ejemplo, si calculamos el polinomio CRC de 32 bits (usando x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1) el CRC calculado se invierte en bits y complementado antes de la transmisión.
Bueno, la pregunta es ¿por qué está formateado en forma de complemento? ¿No se puede leer sin complementar los datos?
Para un ADC cuyo formato natural es binario compensado, el complemento a 2 es la forma natural de representar números con signo. Todo lo que tiene que hacer es invertir el MSB.
La mayoría de los microcontroladores y microprocesadores representan números negativos en forma de complemento a 2. Y muchos ADC están diseñados para su uso en sistemas en tiempo real con limitaciones de tiempo. Tener un formato de complemento a 2 en un ADC (u otro sensor) significa que los números negativos se representan de una manera que su procesador puede usar directamente, sin tener que pasar ciclos haciendo la conversión desde algún otro formato.
En un CRC, sospecho que el resultado simplemente se complementa (invertido bit a bit, también conocido como "complemento de 1"). Un CRC es un cálculo puramente entero y no involucra números negativos, por lo que no tiene absolutamente ningún sentido hacer un complemento a 2 con ese número. No puedo decir por qué lo complementarías con 1, pero debería hacer poca diferencia para el usuario.
La pregunta se reduce a cómo representar números negativos, ya que los números positivos son iguales en la mayoría de las representaciones binarias. Para la mayoría de los casos, el complemento a 2 es la forma más conveniente de representar números negativos en binario. Es casi seguro que así es como el procesador que tiene que manipular la lectura A/D hace sus cálculos, por lo que presentarlo en complemento de 2s directamente en el A/D hace que sea fácil para el procesador.
Algunos A/D solo miden voltajes positivos. Esos pueden usar binario sin firmar. Si no le gusta el complemento a 2 para valores negativos, ¿qué preferiría? Parece que la mayoría de las alternativas causarían más complicaciones.
el fotón
estrella azul