Memory representation of double in c programming
language
Size of double is 64 bit. This is used
as:
1. 52 bit: for mantissa
2. 11 bit: for exponent (including one
signed bit of exponent)
3. 1 bit: for signed bit of mantissa
Memory representation of: double a = -3.3;
Step1: convert the number (3.3) into binary form binary
value of 3.3 is 11.0100110011001100110011001100110011…
Step2: convert the binary number in the scientific form
11.0100110011001100110011001100110011…
= 1.10100110011001100110011001100110011…*10^1
Step3: find exponent and mantissa and signed bit
Mantissa = .1010
01100110 01100110 01100110 01100110 01100110 01100110 (only first 52 bit)
Exponent= 1
Signed bit =1 (Since
a is negative number)
Step4: store 1
in the signed bit (green color in the figure)
Step 5: Add 1023 in the exponent and convert in the binary
number form (since in 10 bit of exponent except signed bit maximum possible
number is 1111111111)
Exponent=
1023+1=1024
Binary form of
1024 is 10000000000
Store first 4
bit i.e. 0000 at the 0 to 3 position of exponent. (In figure represented as
blue color digit)
Store rest 7 bit
at 4 to 10 bit of exponent from right to left (in figure blue color 4 to 10)
Step 6: store the 52 bit mantissa at 1 to 52 bit position in
as shown in figure .Store 1st bit of mantissa (from right to left ) i.e. 1 at
the position 1 of mantissa as in figure ,2nd bit
of mantissa i.e. 0 at the position 2 of mantissa as in figure and so
on. In the memory -3.3 is represented as
If you have any
questions on above Memory representation
of double in c, you can ask here.
2 comments:
where to put sign bit of Exponent
@vinod kumar Prajapati : This is why you add 1023 to the exponent : so that negative exponents are convertible (e.g. if your exponent is -2, you will store 1023-2=1021). Why we do that and don't just put a signed bit ? Because it's the standard.
Post a Comment