hi Joe, it's very simple just divide ur number with 16 (if it is hex), with 8 (if it is oct). And get the remainder of it. Example n is ur number, n = 16 n/16 it will give u 1 and remainder will be 0 so the number is 10. n/8 it will give u 2 and remainder of course will be 0 so the number would be 20. I hope this will help u in understanding.
Given a value 259, here are the steps required to convert it to a hexadecimal value of 0x103? Here is my steps (maybe someone has something better) Step 1: Take a given value and divide it by the radix value you want to convert it to, the radix for hex is base 16. Step 2: Take the remainer from step 1 and multiply it by the radix, this will be your next right most digit. Step 3: Take the integral (whole) value and do step 1 until no more intergral value is left.
Steps to convert 259 to hex value a. 259 / 16 = 16.1875 remainer is 0.1875 for step b integral is 16 for step c b. 1st right most digit = 16 * 0.1875 = 3 c. 16 / 16 = 1.0 remainer is 0 for step d integral is 1 for step e d. 2nd right most digit = 16 * 0 = 0 e. 3rd digit = 1 So 259 = 0x103 [ February 18, 2002: Message edited by: Rajinder Yadav ]
<a href="http://www.rajindery.com" target="_blank" rel="nofollow">Rajinder Yadav</a><p>Each problem that I solved became a rule which served afterwards to solve other problems. --Rene Descartes
Rajinder, this is a nice solution but allow me to doubt that during the exam one will be willing to perform all those computations. Moreover, your solution does not show how to manipulate bits and this is a very important topic for the purpose of the certification when dealing with shift operators and the like. A much more elegant solution that all computer scientists, programmers and students should know at the very beginning is to be able to decompose any number in powers of 2. And from there on you can do everything. I take 259 to show you how easy it is. 1. write the powers of two from the right to the left on a piece of paper, that is 2 power 0, 2 power 1, 2 power 2, and so on: 256 128 64 32 8 4 2 1 2. Decompose your number into those numbers, that is, try to find all powers of two that you can add together and get 259 (there is only one solution). You write a 1 under each number you choose and a 0 under each other number. Easy: 256 128 64 32 16 8 4 2 1 1 0 0 0 0 0 0 1 1 That is 256+2+1 = 259. 100000011 is your binary representation of 259. From there on you can do two things, either convert to hexadecimal (radix 16) or to octal (radix 8). 3. If you want ot convert to hexadecimal, group your binary sequence by groups of 4 bits (because the biggest value a group of 4 bits can have is 15) beginning on the right side and pad the incomplete group on the left with 0's, like this: 0001 0000 0011 Then you just have to take one binary group after another and convert its value to hexadecimal (values range form 0 to F). So we have 103 which we write 0x103 to signify that the number is in hexadecimal and that's it... 4. If you want ot convert to octal, group your binary sequence by groups of 3 bits (because the biggest value a group of 3 bits can have is 7) beginning on the right side and pad the incomplete group on the left with 0's, like this: 100 000 011 Then you just have to take one binary group after another and convert its value to its octal equivalent (values range from 0 to 7). So we have 403 which we write 0403 to signify that the number is in octal and that's it... So 259 in decimal is - 100000011 in binary - 0x103 in hexadecimal - 0403 in octal You must have noticed by now that the latter three are tightly coupled. Do learn this technique because it is very important to know it. If you want more information, please read the following link Javaranch:Cat and Mouse Games with Bits or do a search in this forum. [ February 18, 2002: Message edited by: Valentin Crettaz ] [ February 18, 2002: Message edited by: Valentin Crettaz ]
Another mathematical approach (which is much like Rajinder's although somewhat more straight-forward) you can use is to constantly divide the value you'd like to convert by your base (2 for binary, 8 for octal, 16 for hexadecimal, and so on) until the value reaches 0. When you're done, just look at the remainders and the converted number is laid out for you. Here, I convert 159 to binary:
Now, look back at the remainders and list them in reverse order that you obtained them, in this case: 10011111 This value is 159 in binary. You can then use Val's technique to quickly convert from binary to octal or hexadecimal. You can, however, use this technique to directly convert to octal or hexadecimal, if you'd like, by dividing by 8 or 16. For large numbers, however, I find it easier to convert to binary and then go from there because converting from binary to octal or hexadecimal is very quick and easy. Corey
Thank you Peter, yes it was a typo, actually 2 typos . I've corrected them. Thank you again.
Joined: Jan 18, 2002
Definitly using Corey divide by 2 and Valentin binary grouping seems to be the best way to decompose a number...thanks guys
Joined: Feb 17, 2002
Thanks guys! I really appreciate your help.. Now i know how to convert from Decimal ->Octal -> Hex. What if they give a Hex number and ask me to convert it to Oct or Dec? Can you show me how to do it the other way around?
Just make a chart like this Hex-Binary 0-0000 1-0001 2-0010 . . 9-1001 A-1010 B-1011 C-1100 D-1101 E-1110 F-1111 So, if you get the hex number 0xEF then the binary number is 1110 1111. So the decimal value is 128+64+32+0+8+4+2+1=239 For octal chart is like this Octal-Binary 0-000 1-001 2-010 . . . 7-111 So, if you get octal number 45 then the binary number is 100 101. Decimal value is 32+0+0+4+0+1=37 I think it will help you.
-----------------<br />IBM XML Developer <br />SCJP 1.4
Joined: Feb 18, 2002
For Hex to octal convertion first convert it into binary then to octal like this. Suppose you have 0xFE Then binary is 1111 1110 If you split it by taking 3 bit in a group form right side then 011 111 110 3 7 6 So, the octal number is 376 From octal to hexadecimal conversion can be done in the similar way.