What is the normalized pointer in C language?

Lets understand how a segmented pointer is converted into a linear address. such as, the conversion is:

linear = segment * 16 + offset;

Because of that, it turns out there the same linear address can be expressed using different segment/offset combinations. As, the following segment/offset combinations all refer to the same linear address:


The problem with this is that if you have ptr1 with a segmented address of 0100:0000 and ptr2 with a segmented address of 0010:0020, a simple comparison will determine that ptr1 != ptr2 even though they actually point to the same address.

Normalization is the process by which you convert an address to a form such that if two non-normalized pointers refer to the same linear address, they will both be converted to the same normalized form.