Advertisement

Bitwise operators

Started by June 17, 2000 01:44 AM
3 comments, last by Sponge99 24 years, 7 months ago
Can somebody explain the bitwise operators to me? You know, the & and / and ^ thingies. I have an idea of what they do, but know idea how to use them, or why to use them. Any help/links/tuts will be appreciated......thanx. Dare wa neko o koroshiteimasuka? (Ha! Learn Nihongo!)
"Now watch as I run away in a womanly fashion." - Batman
This is from my perspective, programming DirectX:

When I make a call to some DX thing, alot of the time I''ll have to pass it some flags. These flags are just enums or defines, so all they do is stand for a number. The thing is, I can set multiple flags in the same parameter. How?
Written like this: Func( DX_FOO1 / DX_FOO2 / DX_FOO3 );
(I hate this, the message board kills the pipe key //// see?)
In the enum/define:
DX_FOO1 = 1 binary here
DX_FOO2 = 10
DX_FOO3 = 100

What the or function does (the pipe key that won''t display) it says that 1 / 10 / 100 = 111 (MAke sense?)

Three flags are set all at the same time in the same parameter.
DX would then use & to determine which flags are set.
Say it somes to the point when it wants to know if DX_FOO2 is set.
DX_FOO2 = 10, so it gets the parameter and uses the and function.
111 & 10 = 010
That isn''t zero, so the flag must be set. They are pretty much the only uses for them I''ve come across. Hope that helped.


- IO Fission

Tearing 'em apart for no particular reason...
Advertisement
I just posted an explanation about them (which I don't don't garuntee to be 100% correct) on this forum in relation to checking/setting/zeroing specific bits. It is called next question: bitfields or you can just click here

They can be incredibly useful. To store a boolean value to disk without manipulating bits would take 8 bits. Now say you had 10 million boolean values. That is a signifigant amount of waste. Even for any variables that don't need to take up a whole byte or need more than a byte but not as much as a word, etc. Another use, as IO Fission mentioned, is to store more than one value in a variable. Especially useful for returning values (of course, there are ways around that). Most use found today is used in hardware drivers, where bits represents certain states of the hardware.

Edited by - Sheltem on June 17, 2000 5:45:45 AM
Just a side note. In WIN32 C, BOOL is defined as DWORD. So it actually takes up 4 bytes. It is becase of stack alignment, and packing. Basically computers work faster with DWORD''s.
For a good time hit Alt-F4! Go ahead try it, all the cool people are doing it.
blue-lightning: actually BOOL is defined DWORD or int? but anyway, not because all computers work faster with 4-byte integers, but because the target platform is a 32-bit processor. if the processor is 8, 16 or 64-bit then it would make sense to use data on that alignment, as it makes the most efficient use of the bus.
To the vast majority of mankind, nothing is more agreeable than to escape the need for mental exertion... To most people, nothing is more troublesome than the effort of thinking.

This topic is closed to new replies.

Advertisement