Re: what does "32-bit integer" mean?

From: Xavier Leroy (xleroy@pauillac.inria.fr)
Date: Thu Apr 27 2000 - 10:17:49 MET DST

  • Next message: Thorsten Ohl: "Question about O'Caml 3"

    > A comment on the documentation for the integer types.
    > What does '32 bit integer' mean?

    It means "an integer whose machine representation consists of 32
    binary digits". How surprising...

    > What is the meaning of 'bitwise or'?

    It means "the logical `or' operation applied bit per bit to the
    machine representations of its two arguments". Unexpected, isn't it?

    (I think you just won the first prize for most vacuous question asked on
    this mailing list.)

    > It is _necessary_ to say something like
    > 'implements an integer with 32 bit twos complement
    > representation' for either of these statements to be meaningful,
    > that is, to establish a mapping between an array of 32 bits,
    > and an integral value.

    Ah, twos complement and ones complement -- comp.lang.c 's favorite
    flame war. (I know you love flame wars, but are you sure we should
    have this one here?)

    Caml integers are C integers in (slight) disguise -- by virtue of the
    Caml bytecode interpreter being written in ANSI C. C integers are
    machine integers in (slight) disguise. The ANSI C reference explains
    what can be assumed on integers and what is machine-dependent. Yes,
    bitwise operations expose the difference between twos complement and
    ones complement. So what?

    At any rate, no ones complement computer have been produced in the last
    20 years, so it should be safe to assume twos complement if you need
    to make that assumption.

    This reminds me of a nice compiler book from the late 60s, whose title
    is something like "Compilation for digital computers". Presumably, in
    these days, one had to specify that one's computer was digital, not
    analog. Now we don't bother.

    - Xavier Leroy



    This archive was generated by hypermail 2b29 : Thu Apr 27 2000 - 15:15:54 MET DST