Fórmula para Alinear una Dirección de Memoria a un Múltiplo Dado

Publicar una respuesta


Esta pregunta es una forma de evitar inserciones automatizadas por spambots.
Emoticonos
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :| :mrgreen: :geek: :ugeek:
BBCode está habilitado
[img] está habilitado
[flash] está deshabilitado
[url] está habilitado
Emoticonos están habilitados
Revisión de tema
   

Si quieres adjuntar uno o más archivos introduce los detalles debajo

Expandir vista Revisión de tema: Fórmula para Alinear una Dirección de Memoria a un Múltiplo Dado

Fórmula para Alinear una Dirección de Memoria a un Múltiplo Dado

Nota por ~ » Lun Nov 19, 2018 7:32 am

Código: Seleccionar todo
((  direccion + (alineacion-1)  )  /  alineacion)  * alineacion

Restar 1 a la alineación deseada
y sumarle la dirección inicial.
Dividir todo eso entre la alineación
multiplicar ese resultado entero
por la alineación para obtener una
dirección alineada a 2, 4, 8, 16 bytes, etc.



A la alineación deseada le restamos 1
y a esto le sumamos la dirección deseada.
Eso nos va a dar un bloque de alineación
extra pero al que le falta 1 para estar
completo.

Con eso siempre vamos a obtener una
dirección alineada igual o mayor a la
inicial.

Tenemos que dividir el valor anterior
entre la alineación que queremos para
obtener el número de bloques completos
de alineación. Siempre que tengamos
una dirección ya alineada o a la que le
falten bytes para estar completa,
vamos a obtener un número de bloques
igual o mayor (mayor en caso de no
estar alineada).

Cuando volvemos a multiplicar por el
tamaño de alineación obtenemos la
dirección a alineada.

Arriba


cron