Archived

This topic is now archived and is closed to further replies.

vbisme

0x(whatever) for hex, what about binary?

Recommended Posts

In C++, we use 0x and the the hex values to represents hexedecimal values like: x = 0xA; meaning the same as x = 10; How do I do that for binary values?

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
As far as I know, you can''t use binary directly. I use calc to convert from binary to hex when I have to.

Share this post


Link to post
Share on other sites
Although converting binary to hex is so easy that you don''t really need a calculator. This is partly why hex is chosen as the standard representation for binary numbers.

Just break the binary number into blocks of 4 digits, and 4 binary digits (bits, obviously) is equivalent to 1 hexadecimal digits (which should probably be called hits ). The first bit is the ''1s'' column, the second is the ''2s'', the 3rd is the ''4s'' and the last column is the ''8s''. Add them up, and you have your hex digit, with A to F representing 10 to 15.

Example:

100101010011101 in binary
100 1010 1001 1101 broken up (remember to start from the right)
4 A 9 C broken up in Hex
0x4A9C in C code.

It''s that simple!

Share this post


Link to post
Share on other sites
Basically the answer to the original question is you can''t assign values directly as binary in C/C++ right?

Share this post


Link to post
Share on other sites
And if you can''t count to 15 (run out of toes), just go to 7 (base 8, or octal):

101 011 111 110
5 3 7 6

x = 05376; (leading zero indicates octal to C++).

Now isn''t that confusing?

You could also make a function to convert a "binary" string "101011111110" to an integer, involving a loop and some shifts.
However, last time I posted an answer to that, a mini mini flame war erupted

~~~
Cheers!
Brett Porter
PortaLib3D : A portable 3D game/demo libary for OpenGL

Share this post


Link to post
Share on other sites
brettporter, I found that extremely interesting.

Also, is there any speed penalty for setting a variable equal to a hexidecimal value, an octal value of a base10 value?

Possibility

Share this post


Link to post
Share on other sites
Any speed penalty for using a different base is compile time. All of the different bases are represented the same at run time.

Even so, the speed penalties are probably extremely small, don''t worry about it

Share this post


Link to post
Share on other sites
Oh yah, my bad. I guess it would be switched at compile time and not at run time, for some reason i was just thinking of the speed penalties suffered converting a float to an int, but its not the same

Possibility

Share this post


Link to post
Share on other sites