Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > format of double and __int64

Reply
Thread Tools

format of double and __int64

 
 
Jayesh
Guest
Posts: n/a
 
      11-28-2005
Hi,
How is a double value stored in 8 bytes ? Or what is the format ?
How is it different from __int64 ? How is __int64 stored in 8 bytes.
Please do reply.

regards,
Jayesh

 
Reply With Quote
 
 
 
 
Richard Bos
Guest
Posts: n/a
 
      11-28-2005
"Jayesh" <(E-Mail Removed)> wrote:

> How is a double value stored in 8 bytes ? Or what is the format ?


Only your implementation's documentation can tell you. In fact, only
your docs can tell you _whether_ a double is stored in 8 bytes, let
alone how.

> How is it different from __int64 ? How is __int64 stored in 8 bytes.


There is no such thing as an __int64 in ISO C, but where it is an
extension it probably is an integer type. double is a floating point
type. The two are very different. Integer types are stored as a number
of value bits, a sign bit if it's a signed type, and possibly a number
of padding bits. Floating point types are stored as a sign bit
(always!), a mantissa, and an exponent.

> Please do reply.


No. Won't. Refuse to. So there.

Richard
 
Reply With Quote
 
 
 
 
Niklas Norrthon
Guest
Posts: n/a
 
      11-28-2005
"Jayesh" <(E-Mail Removed)> writes:

> Hi,
> How is a double value stored in 8 bytes ?


First byte first, last byte last, and everyting else in between.

How a double is stored can vary from one implementation to the
other, and it doesn't even have to be 8 bytes (whatever a byte
means...)

Or what is the format ? In printf "%f" or "%g" perhaps?

> How is it different from __int64 ?


There is no type named __int64 in C. (At least not in C90). Anyway,
a 64 bit integer would store integer value, and double floating
point values, so the same bit pattern would most likely represent
different values. One exception might be zero, which might be
represented as all bits zero both for integers and floating point
values, but even that is not guarantied.

/Niklas Norrthon
 
Reply With Quote
 
Gordon Burditt
Guest
Posts: n/a
 
      11-28-2005
> How is a double value stored in 8 bytes ?

Who says a double takes 8 bytes? That is not guaranteed, although
it is a popular implementation.

>Or what is the format ?


Any format the implementation wants. The double-you aitch ay tee
format is not particularly popular.

>How is it different from __int64 ?


double is a type in standard C. __int64 is not.

>How is __int64 stored in 8 bytes.


Types that do not exist aren't stored.

Gordon L. Burditt
 
Reply With Quote
 
Jayesh
Guest
Posts: n/a
 
      11-29-2005
Thanks Richard.
Ok, so double is a floating poind type and is stored as sign
bit,mantissa and an exponent. So for a double value is there any fixed
format like these many bits for mantissa and these many bits for
exponent ?
Similarly how is the long long variable stored ? Is it a sign bit
followed by the value bits ?
( I use visual c++ compiler or cc or CC and always confuse with whether
the type belongs to C or C++ )

// Jayesh

 
Reply With Quote
 
Mark McIntyre
Guest
Posts: n/a
 
      11-29-2005
On 29 Nov 2005 01:42:13 -0800, in comp.lang.c , "Jayesh"
<(E-Mail Removed)> wrote:

>Thanks Richard.
>Ok, so double is a floating poind type and is stored as sign
>bit,mantissa and an exponent. So for a double value is there any fixed
>format like these many bits for mantissa and these many bits for
>exponent ?


No. However many C implementations will use IEEE 754 format.

> Similarly how is the long long variable stored ? Is it a sign bit
>followed by the value bits ?


Whatever is most convenient for the platform. Typically it might well
be as you describe, but as far as I know, C makes no requirements.
--
Mark McIntyre
CLC FAQ <http://www.eskimo.com/~scs/C-faq/top.html>
CLC readme: <http://www.ungerhu.com/jxh/clc.welcome.txt>

----== Posted via Newsfeeds.Com - Unlimited-Unrestricted-Secure Usenet News==----
http://www.newsfeeds.com The #1 Newsgroup Service in the World! 120,000+ Newsgroups
----= East and West-Coast Server Farms - Total Privacy via Encryption =----
 
Reply With Quote
 
Eric Sosman
Guest
Posts: n/a
 
      11-29-2005


Jayesh wrote On 11/29/05 04:42,:
> Thanks Richard.
> Ok, so double is a floating poind type and is stored as sign
> bit,mantissa and an exponent. So for a double value is there any fixed
> format like these many bits for mantissa and these many bits for
> exponent ?


The C Standard does not guarantee any particular
values. However, the Standard requires the implementation
to document its values through macros defined in <float.h>.
You seem to be interested in FLT_RADIX, DBL_MANT_DIG,
DBL_MIN_EXP, and DBL_MAX_EXP.

--
http://www.velocityreviews.com/forums/(E-Mail Removed)

 
Reply With Quote
 
Keith Thompson
Guest
Posts: n/a
 
      11-29-2005
Mark McIntyre <(E-Mail Removed)> writes:
> On 29 Nov 2005 01:42:13 -0800, in comp.lang.c , "Jayesh"
> <(E-Mail Removed)> wrote:

[...]
>> Similarly how is the long long variable stored ? Is it a sign bit
>>followed by the value bits ?

>
> Whatever is most convenient for the platform. Typically it might well
> be as you describe, but as far as I know, C makes no requirements.


Actually, there are some requirements. Since long long is a signed
type, it's guaranteed to be represented as one of two's-complement,
one's-complement, or signed-magnitude. There are also some
requirements about the value bits matching between any signed integer
type and the corresponding unsigned type. And there be padding bits
that don't contribute to the value and/or that can introduce trap
representations.

But for the most part, you don't really need to know. Most operators
are defined to work on the values of the operands, not on their
representation.

--
Keith Thompson (The_Other_Keith) (E-Mail Removed) <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
 
Reply With Quote
 
Joe Wright
Guest
Posts: n/a
 
      11-29-2005
Jayesh wrote:
> Hi,
> How is a double value stored in 8 bytes ? Or what is the format ?
> How is it different from __int64 ? How is __int64 stored in 8 bytes.
> Please do reply.
>
> regards,
> Jayesh
>

You've received all valid responses above this one. C won't give you the
answer. The double is stored in 8 bytes (64 bits) on my system too.
Something like this..

(64-bit double)
6 5 4 3 2 1
32109876543210987654321098765432109876543210987654 32109876543210
- 1-bit sign (1 == negative)
----------- 11-bit exponent (unsigned)
53-bit mantissa -----------------------------------------------------

I hope this doesn't wrapup in your newsreader or that you can otherwise
straighten it out.

This is really Off Topic in clc. Shame on me.

--
Joe Wright
"Everything should be made as simple as possible, but not simpler."
--- Albert Einstein ---
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
cannot convert parameter from 'double (double)' to 'double (__cdecl *)(double)' error Sydex C++ 12 02-17-2005 06:30 PM
__int64 vs. long long Tim Clacy C++ 8 11-10-2003 03:29 PM
unsigned __int64 overflow problem Vivi C++ 2 08-25-2003 06:09 AM
SWIG and __int64 Matt Whelan Python 2 08-15-2003 08:40 PM
Re: Different results if compared as double or __int64? John Tsiombikas (Nuclear / the Lab) C++ 1 06-30-2003 02:31 PM



Advertisments