Español[Español] English[English]

Fecha actual Jue Ago 22, 2019 7:57 pm
Página 1 de 1

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

NotaPublicado: Lun Nov 19, 2018 7:32 am
por ~
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.