I know next to nothing about .sift files but if you search for "512" in this link, you'll find the same instructions you shared but it doesn't describe the normalization process.
According to this resource (again, search for "512" on that page), the sift-based descriptors are L2-Normalized and subsequently multiplied by 512, then rounded to the nearest integer. The description also provides a way to verify that normalization was done correctly.
So, what is L2-normalization? It is a regularization method in machine learning that is better described by this site. Previous answers in this forum have shown that L2-Normalization is straightforward to perform in matlab.
Given all of that information, the normalization would look something like this
% v is your vector
vnorm = round(v/norm(v) * 512);
but you'll need to verify that this is correct by diving into the methods on Koen's website (the 2nd link I shared). I want to be clear that this is where I'd start if I were you but by no means am I inserting confidence that this is what your program (which I've never used) requires. Note that this topic was also discussed here and here (search for "512" on those pages) and those reference agree with the above.
Best Answer