Lo que está confundiendo es el campo de dirección I2C de 7 bits (que no es un campo HEX o de 8 bits) con los registros de 8 bits utilizados por una MCU para construir la dirección lógica y el indicador de dirección.
Escribí una cobertura de esto para un libro de Raspberry pi que podría ayudarte:
ElcontenidoderegistroparaquecomienceunatransacciónconelprimerPCA6416Aensusistemaqueutilizalabibliotecadesoftwaresería0x40paraescribiry0x41paraleer.ParaelsegundoPCA6416A(ADDR=1)susvaloresderegistroserían0x42paraescribiry0x43paraleer.Ydadoqueelsoftwaredelescáner(queescaneausandosoloescribeyvalidacuandoveACKdelesclavo)simplementedevuelveladirecciónACKenlos7bitssuperiores,demodoqueterminatratandoconesosvaloresderegistroHEX.Tengaencuentaque,enlahojadedatos,evitancuidadosamenteelusodelarepresentaciónHEXdedatosysemantienenconvaloresdebitsencamposde8bitsparaevitarconfusiones.
TodoelCapítulo6enI2Ces aquí en los libros de Google tal vez pueda ayudarte.
Hay dos esquemas de direccionamiento, 7 bits y 10 bits.
Puede leer sobre los estándares de direccionamiento I2C de enlace o de NXP (Phillips) que desarrolló los primeros dispositivos, enlace
También hay una especificación relajada de baja velocidad (100, 400, 1 Mbps) llamada SMBUS (y un PMBUS similar) que se usa en prácticamente todas las placas base de PC para tareas de administración (fuentes de alimentación, ventiladores, sensores de temperatura, etc.). Verá muchas implementaciones de estos buses de 10k a 400k bps, pero todas están limitadas a direccionamiento de 7 bits.