# Endianness macros

Discussion in 'C Programming' started by James Harris, Aug 23, 2013.

1. ### Paul J GansGuest

But one can take IXX to be 19 so that IXXCC = 300 - 19 = 281... ;-)

Paul J Gans, Aug 30, 2013

2. ### Keith ThompsonGuest

I didn't intend it to be subtractive.

And I just noticed that I screwed up the Roman numeral example
above, which probably led to some confusion as some people either
took me seriously or assumed I was making a joke that I didn't
actually intend.

The number "one hundred twenty-three" is written in the left-to-right
big-endian Hindu-Arabic numerals we commonly use as "123". It's also
written in right-to-left little-endian Hindu-Arabic numerals as
"123", but the '3' is first; I understand that that's how it's
actually done in Arabic. Europe adopted the numbering system from
the Arabs (thanks to Fibonacci) and kept the same left-to-right
order, but reinterpreted it as left-to-right big-endian. Which is
why many of us see big-endian as a more "natural" ordering.
(I don't know why the Arabs, picked a little-endian ordering.)

Roman numerals are also written in left-to-right big-endian form,
so 123 is "CXXIII" (which is what I *should* have written in the
first place). If Roman numerals were in left-to-right little-endian
form, the same number would be written as "IIIXXC".

Keith Thompson, Aug 30, 2013

3. ### Keith ThompsonGuest

Quidquid Latine dictum sit altum videtur.

I believe 1999 is written MCMXCIX.

I was taught that:
- A single I can be subtracted from a following V or X
- A single X can be subtracted from a following L or C
- A single C can be subtracted from a following D or M

Exception: The 4 on a clock face is written IIII, not IV (but 9 is still
written IX).
In traditional Roman numbers *as I was taught them*, IXXCCC is a syntax
error.

Keith Thompson, Aug 30, 2013
4. ### James KuyperGuest

No, just didn't feel it was worth commenting on.

James Kuyper, Aug 30, 2013
5. ### Stephen SprunkGuest

Why would you need to reassign the digits, though? Endianness just says
whether the most or least significant digit comes first. In the above
examples, three hundred twenty-one is written as:

321 in big-endian (i.e. normal) Arabic numerals
123 in little-endian Arabic numerals
CCCXXI in big-endian (i.e. normal) Roman numerals
IXXCCC in little-endian Arabic numerals

(How many times will I mistakenly type "numberals" today? Sheesh.)

S

Stephen Sprunk, Aug 30, 2013
6. ### Eric SosmanGuest

Numerless times.

Eric Sosman, Aug 30, 2013
7. ### Stephen SprunkGuest

Numberous times?

S

Stephen Sprunk, Aug 30, 2013
8. ### Stephen SprunkGuest

Ah, I was looking at the CCCXXI in the example, not the 123. I didn't
notice the example wasn't self-consistent.

S

Stephen Sprunk, Sep 2, 2013
9. ### David ThompsonGuest

Certainly no more than one was needed, and I don't recall if ANSI was
(then) paranoid about marking. IBM definitely was, FWIW.
Huh? Every 'scope I've used swept from left to right, so the first bit
sent, which is least significant, would be at left. Of course, for
truly async characters you would need a triggered scope to see them
consistently, and in the 1960s triggered was extra cost and rare.
For synchronous transmission (which was rarer for ASCII, but not
unknown), or for nominally async but continuous transmission (like
paper-type devices or most computer output) you could just clock at
10Hz, or 30Hz, or whatever.

At least in the US; I might wonder if they might be right to left in
UK, or Israel/Arab countries, or Japan/China/etc. I doubt it.

David Thompson, Sep 4, 2013