Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C++ (http://www.velocityreviews.com/forums/f39-c.html)
-   -   binary number (http://www.velocityreviews.com/forums/t285345-binary-number.html)

 Bern 09-01-2004 05:25 AM

binary number

how to specifiy a binary number in c++?

hex numbers are specified by 0x prefix

 Victor Bazarov 09-01-2004 05:50 AM

Re: binary number

" Bern" <x@x.com> wrote...
> how to specifiy a binary number in c++?
>
> hex numbers are specified by 0x prefix

There is no standard syntax for binary numbers.

V

 Karthik Kumar 09-01-2004 08:09 AM

Re: binary number

Bern wrote:

> how to specifiy a binary number in c++?
>
> hex numbers are specified by 0x prefix
>
>

Specifying binary numbers hampers readability of the code. In
fact, though you can specify octal constants in C++ code ( 0 prefix),
for all practical purposes use hex numbers since people can understand /
read it better when written that way.

--
Karthik.

 Risto Lankinen 09-01-2004 08:22 AM

Re: binary number

" Bern" <x@x.com> wrote in message news:41355ce2\$1@news.starhub.net.sg...
> how to specifiy a binary number in c++?
>
> hex numbers are specified by 0x prefix

There's no language support for binary literals. Many programmers
use hexadecimal 0x0001, 0x0002, 0x0004, ... 0x8000 to define bits,
and then operator|() (a.k.a. operator bit_or) to construct the actual
number from separate bits.

Another less common but easier way for some is to use octal (whose
prefix is plain '0'), which is a bit easier to cope with than hexadecimal
numbers.

[By the way, C and C++ are perhaps the only programming languages
having no token representing decimal zero! :-]

- Risto -

 red floyd 09-01-2004 04:39 PM

Re: binary number

Risto Lankinen wrote:
>
> [By the way, C and C++ are perhaps the only programming languages
> having no token representing decimal zero! :-]
>
> - Risto -
>
>

what would the token 0 be, then?

 Mike Wahler 09-01-2004 05:29 PM

Re: binary number

"red floyd" <no.spam@here.dude> wrote in message
news:KWmZc.14518\$AX6.13446@newssvr29.news.prodigy. com...
> Risto Lankinen wrote:
> >
> > [By the way, C and C++ are perhaps the only programming languages
> > having no token representing decimal zero! :-]
> >
> > - Risto -
> >
> >

>
> what would the token 0 be, then?

Octal zero. (it begins with the '0' character).

-Mike

 Kai-Uwe Bux 09-01-2004 09:17 PM

Re: binary number

Mike Wahler wrote:

>
> "red floyd" <no.spam@here.dude> wrote in message
> news:KWmZc.14518\$AX6.13446@newssvr29.news.prodigy. com...
>> Risto Lankinen wrote:
>> >
>> > [By the way, C and C++ are perhaps the only programming languages
>> > having no token representing decimal zero! :-]
>> >
>> > - Risto -
>> >
>> >

>>
>> what would the token 0 be, then?

>
> Octal zero. (it begins with the '0' character).
>
>
>
> -Mike

I am confused?

What exactly is the difference between the numerical constant 0_8 denoted
by the string "0" in octal notation versus the numerical constant 0_10
denoted by the string "0" is decimal notation (as existent in other
languages). In particular, what is

0_8 - 0_10

Best

Kai-Uwe Bux

 Howard 09-01-2004 10:29 PM

Re: binary number

"Kai-Uwe Bux" <jkherciueh@gmx.net> wrote in message
news:ch5ea1\$6t7\$1@murdoch.acc.Virginia.EDU...
> >> what would the token 0 be, then?

> >
> > Octal zero. (it begins with the '0' character).
> > -Mike

>
> I am confused?
>
> What exactly is the difference between the numerical constant 0_8 denoted
> by the string "0" in octal notation versus the numerical constant 0_10
> denoted by the string "0" is decimal notation (as existent in other
> languages). In particular, what is
>
> 0_8 - 0_10
> Kai-Uwe Bux

That's a VERY confusing question. Your terminology and representations are
difficult to comprehend. But I'll try to address what I THINK you're

There is no difference in the value STORED when you write any if the
following:

int hexInt = 0x08;
int octInt = 08;
int decInt = 8;

Those are all representations of the number eight. The only difference is
what your source code looks like, not what results after compiling.

The integer literal 0, according to the grammar, is an octal representation
of the value zero. You could also say 0x0 (or 0x00000000, for that matter),
using the hexadecimal representation for zero, but it's still the value
zero. And there IS NO saparate notation for the value zero represented as a
decimal, because that would be the same as the octal representation, namely
0. When you write "int x = 0;", you're just assigning the VALUE zero to the
variable x. It's irrelevant whether the literal 0 is an octal or decimal
representation. It's still just zero!

(I suppose, the grammar COULD have been defined so that 00 was the octal
representation for zero, and 0 was the decimal representation, but that's
not the way it WAS defined, and it really doesn't matter at all.)

-Howard

 Mike Wahler 09-01-2004 11:22 PM

Re: binary number

"Kai-Uwe Bux" <jkherciueh@gmx.net> wrote in message
news:ch5ea1\$6t7\$1@murdoch.acc.Virginia.EDU...
> Mike Wahler wrote:
>
> >
> > "red floyd" <no.spam@here.dude> wrote in message
> > news:KWmZc.14518\$AX6.13446@newssvr29.news.prodigy. com...
> >> Risto Lankinen wrote:
> >> >
> >> > [By the way, C and C++ are perhaps the only programming languages
> >> > having no token representing decimal zero! :-]
> >> >
> >> > - Risto -
> >> >
> >> >
> >>
> >> what would the token 0 be, then?

> >
> > Octal zero. (it begins with the '0' character).
> >
> >
> >
> > -Mike

>
> I am confused?

Perhaps.

> What exactly is the difference between the numerical constant 0_8 denoted

0_8 is not a numerical constant. It's not a valid C++ token at all.

> by the string "0"

A string is not a numeric literal, it's a string literal.

> in octal notation

In C++, octal notation is expressed by the first digit being zero.

>versus the numerical constant 0_10.

0_10 is not a numerical constant. It's not a valid C++ token at all.

> denoted by the string "0"

A string is not a numeric literal, it's a string literal.

> is decimal notation

In C++, decimal notation is expressed by the first digit being
1, 2, 3, 4, 5, 6, 7, 8, or 9

>(as existent in other
> languages).

This is C++, not other languages.

>In particular, what is
>
> 0_8 - 0_10

From a C++ perspective, it's gibberish.

From the C++ standard:

================= begin quote ================
ISO/IEC 14882:1998(E)

2.13.1 Integer literals

integer*-literal:
decimal*-literal integer*-suffix opt
octal*-literal integer*-suffix opt

decimal-*literal:
nonzero-*digit
decimal-*literal digit

octal*-literal:
0
octal*-literal octal*-digit

nonzero*-digit: one of
1 2 3 4 5 6 7 8 9

octal-*digit: one of
0 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7 8 9
a b c d e f
A B C D E F

integer-*suffix:
unsigned*-suffix long*s-uffix opt
long*-suffix unsigned*-suffix opt

unsigned-*suffix: one of
u U

long*-suffix: one of
l L

1 An integer literal is a sequence of digits that has no period
or exponent part. An integer literal may have a prefix that
specifies its base and a suffix that specifies its type. The
lexically first digit of the sequence of digits is the most
significant. A decimal integer literal (base ten) begins with
a digit other than 0 and consists of a sequence of decimal
digits. An octal integer literal (base eight) begins with the
digit 0 and consists of a sequence of octal digits. (22)
A hexadecimal integer literal (base sixteen) begins with 0x
or 0X and consists of a sequence of hexadecimal digits, which
include the decimal digits and the letters a through f and A
through F with decimal values ten through fifteen. [Example:
the number twelve can be written 12, 014, or 0XC. ]

2 The type of an integer literal depends on its form, value, and
suffix. If it is decimal and has no suffix, it has the first of
these types in which its value can be represented: int, long int;
if the value cannot be represented as a long int, the behavior
is undefined. If it is octal or hexadecimal and has no suffix,
it has the first of these types in which its value can be
represented: int, unsigned int, long int, unsigned long int.
If it is suffixed by u or U, its type is the first of these
types in which its value can be represented: unsigned int,
unsigned long int. If it is suffixed by l or L, its type is the
first of these types in which its value can be represented: long
int, unsigned long int. If it is suffixed by ul, lu, uL, Lu, Ul,
lU, UL, or LU, its type is unsigned long int. 3 A program is
ill*formed if one of its translation units contains an integer
literal that cannot be represented by any of the allowed types.

(21) The term "literal" generally designates, in this International
Standard, those tokens that are called "constants" in ISO C.

(22) The digits 8 and 9 are not octal digits.
================= end quote ==================

The base of literal 0 doesn't really matter, since zero is zero,
whatever the base.

-Mike

 josh 09-01-2004 11:45 PM

Re: binary number

Risto Lankinen wrote:

> " Bern" <x@x.com> wrote in message news:41355ce2\$1@news.starhub.net.sg...
>
>>how to specifiy a binary number in c++?
>>
>>hex numbers are specified by 0x prefix

There were some excellent macros posted to comp.lang.c a while ago:

that let you define binary constants like B8(01001010)

> Another less common but easier way for some is to use octal (whose
> prefix is plain '0'), which is a bit easier to cope with than hexadecimal
> numbers.

I always found octal harder than hex. :/ I guess mainly 'cuz I'm used
to grouping my binary numbers in bundles of 4 (or powers of 2) rather
than bundles of 3 bits.

> [By the way, C and C++ are perhaps the only programming languages
> having no token representing decimal zero! :-]

"0."

-josh

All times are GMT. The time now is 10:42 AM.