|Just another Perl shrine|
Re: Decimal to Hexadecimal conversion and extraction MSBby eye (Chaplain)
|on Oct 17, 2009 at 06:08 UTC||Need Help??|
...I need to extract the left most "1" bit...
I think it is easier to work from $decimal_number. To do this, you need to specify the size of the number. As an example, I'll use 16 bit integers. You can extract the most significant bit using the bit-and operator (&) and an appropriately chosen bit mask. The bit mask needs the high bit set and all others clear. For 16 bit integers, this would be 0x8000.
$msb will be 0 or 2^15.
...left shift the original hexadecimal number...
Again, start with $decimal_number. Use a bit mask to remove the most significant bit and then multiply the number by 2.
You can choose any intermediate result to translate to binary for display, but it is better to do this kind of manipulation on numbers rather than strings.
Caveats: The integer size you are working with must not be larger than the integer size on your system. You need to understand how your system represents integers. Usually, the most significant bit is used for the sign in integers.