Mail Archives: djgpp/1998/02/09/19:01:53
From: | "John M. Aldrich" <fighteer AT cs DOT com>
|
Newsgroups: | comp.os.msdos.djgpp
|
Subject: | Re: Allegro ex11.c
|
Date: | Mon, 09 Feb 1998 18:54:57 -0500
|
Organization: | Two pounds of chaos and a pinch of salt.
|
Lines: | 31
|
Message-ID: | <34DF9751.1F0C@cs.com>
|
References: | <34DF7294 DOT 21D0 AT home DOT com>
|
NNTP-Posting-Host: | ppp212.cs.com
|
Mime-Version: | 1.0
|
To: | djgpp AT delorie DOT com
|
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp
|
Dan wrote:
>
> i have a question concerning a part of the code from the allegro example
> files. it's probably a stupid question but i've looked in my c and c++
> books and i can't find the answer. here's the question, in this small
> snippet of the code..
>
> hotspot[c] += (random() & 7) - 3;
>
> what does "random() & 7" do? i'm figuring random() returns a random
> # of type int maybe? but i have no idea what the "& 7" does. the & 7
> is the only thing that i need an explenation for. any help would be
> much appreciated.
& is a bitwise operator, along with ~, |, <<, >>, and ^. It performs a
logical operation on the individual bits of an integral value. & stands
for bitwise AND, so the above code causes the return value of random()
to be AND'ed with 7, which is 111 in binary. The result is that the
return value has all bits except for the low three masked off (zeroed),
creating a value from 0 to 7. The code then subtracts 3 from the value,
so hotspot[c] gets assigned a random number from -3 to 4.
Bitwise operators are covered in any standard C textbook.
--
---------------------------------------------------------------------
| John M. Aldrich | "Always listen to experts. They'll |
| aka Fighteer I | tell you what can't be done, and why.|
| mailto:fighteer AT cs DOT com | Then do it." |
| http://www.cs.com/fighteer/| - Lazarus Long |
---------------------------------------------------------------------
- Raw text -