Converting Hexadecimal (base 16) to Octal (base 8)

  • Thread starter Thread starter WaterRain
  • Start date Start date
  • Tags Tags
    hexadecimal
Click For Summary

Discussion Overview

The discussion revolves around converting a hexadecimal (base 16) value, specifically FACE.BE, into octal (base 8), with a focus on both the integral and fractional parts of the number. Participants explore various methods for conversion, including direct approaches and binary regrouping, while addressing potential mistakes and clarifying concepts.

Discussion Character

  • Homework-related
  • Technical explanation
  • Conceptual clarification
  • Debate/contested

Main Points Raised

  • One participant initially converts FACE.BE to decimal and then to octal, expressing uncertainty about the fractional part.
  • Another participant corrects the fractional conversion from 0.742188 to 0.574 and questions the efficiency of the conversion process.
  • Some participants propose that each hex digit corresponds to two octal digits, suggesting a method for conversion based on the value of the hex digit.
  • It is suggested that converting hex to binary first and then regrouping to octal is a straightforward method, especially for the fractional part.
  • Several participants discuss the grouping of binary digits to form octal digits, emphasizing the need to pad with zeros when necessary.
  • There is a debate about the applicability of certain methods for single versus multiple hex digits, with some participants asserting that different methods may be needed based on the number of digits involved.
  • One participant expresses confusion about the fractional conversion and acknowledges a mistake in their earlier calculations.
  • Another participant clarifies the correct method for converting the fractional part, emphasizing the importance of padding zeros correctly.

Areas of Agreement / Disagreement

Participants generally agree on the methods for conversion but express differing opinions on the efficiency and applicability of various approaches. Some methods are contested, particularly regarding their use for single versus multiple hex digits, and the discussion remains unresolved on the best approach for all cases.

Contextual Notes

Participants note that the figures to the right of the decimal point are primarily relevant for homework questions, and there is mention of how real numbers are stored in computers, which may introduce additional complexity not addressed in the conversion methods discussed.

WaterRain
Messages
13
Reaction score
0

Homework Statement


Convert the hexadecimal (base 16) value FACE.BE into octal (base 8), correct
to 2 octal places.


Homework Equations


Nil


The Attempt at a Solution


First, I've converted the FACE.BE to decimals and I got 64206.742188

Next I change them to octal
64206(dec) = 175316(oct)

However, I'm unsure with the 0.742188
I continued my solution by treating it is 742188 and got 2651454

If that's the case, my answer is 175316.27(oct).
Is this answer correct?
Any quicker way to do it like Octal to Hexadecimal without the need to convert into Decimal first.
 
Physics news on Phys.org
I realized I made a mistake.

0.742188 should give 0.574 instead.

1. Answer is 175316.57?
2. Any quicker way to convert from Hex to Oct?
 
Yes, each hex digit is two octal digits.
Take the hex digit, if it is less than 8 it's already octal - just put an 0 in front.
If it's more than 8, subtract 8, and put a 1 in front of the result.

eg. F = 1 7 ( ie 1*8 + 7)
 
It would be relatively easy if you convert hex into binary (1 hex digit gives 4 digits of binary) and then regrouping the resulting number 3 digits at a time to make octal digits, starting from the decimal point.
Your answer for the integral part is correct, but you can confirm it using the binary conversion.
The fractional part is represented by fractions, for example:
0.123= 1/10 + 2/100 + 3/1000 (in decimal)
So
0.BE = B/16 + E/256 (in hex)
(Yes, 0.BE (hex) gives 0.574 (octal))
and
0.257 = 2/8 + 5/64 + 7/512 (in Octal)

The procedure of grouping 3 binary digits to represent octal digits for the fractional part is the same as in the integral part, namely you must start the grouping from the decimal point towards the right, and pad remaining digits with zeroes if the number of non-zero digits to the right of the decimal (or rather octal) point is not divisible by 3.
 
mgb_phys said:
Yes, each hex digit is two octal digits.
Take the hex digit, if it is less than 8 it's already octal - just put an 0 in front.
If it's more than 8, subtract 8, and put a 1 in front of the result.

eg. F = 1 7 ( ie 1*8 + 7)

Does this only work for a single Hex?
 
mgb_phys said:
Yes, each hex digit is two octal digits.

A hex digit is actually 4/3 of an octal digit. So for example, FFF hex = 7777 octal.

The best way to see this is to convert hex to binary, then binary to octal.
 
mathmate said:
It would be relatively easy if you convert hex into binary (1 hex digit gives 4 digits of binary) and then regrouping the resulting number 3 digits at a time to make octal digits, starting from the decimal point.
Your answer for the integral part is correct, but you can confirm it using the binary conversion.
The fractional part is represented by fractions, for example:
0.123= 1/10 + 2/100 + 3/1000 (in decimal)
So
0.BE = B/16 + E/256 (in hex)
(Yes, 0.BE (hex) gives 0.574 (octal))
and
0.257 = 2/8 + 5/64 + 7/512 (in Octal)

The procedure of grouping 3 binary digits to represent octal digits for the fractional part is the same as in the integral part, namely you must start the grouping from the decimal point towards the right, and pad remaining digits with zeroes if the number of non-zero digits to the right of the decimal (or rather octal) point is not divisible by 3.

I get it now - partially.

FACE = 1111 1010 1100 1110
regroup = 001 111 101 011 001 110
Oct = 175316

But for .BE, it is not possible to do likewise but to use the method you suggest
0.BE = B/16 + E/256

Is this right?
 
DoctorBinary said:
A hex digit is actually 4/3 of an octal digit. So for example, FFF hex = 7777 octal.

The best way to see this is to convert hex to binary, then binary to octal.

I see. This means if converting a single hex I can use as mgb_phys suggested right?
example F(hex) = 17(oct).

mgb_phys said:
Take the hex digit, if it is less than 8 it's already octal - just put an 0 in front.
If it's more than 8, subtract 8, and put a 1 in front of the result.

Anything more than one hex will not work.
Like FFF(hex) = 7777(oct).
 
WaterRain said:
I see. This means if converting a single hex I can use as mgb_phys suggested right?
example F(hex) = 17(oct).

Anything more than one hex will not work.
Like FFF(hex) = 7777(oct).

For one hex digit, and if it's to the left of the radix point -- yes, mgb_phys's method works. But why have two methods? The "write hex in binary and regroup to octal" method that mathmate outlines will work for any number of digits, and is easy to apply on both sides of the radix point (just remember to pad 0s away from the radix point).
 
  • #10
WaterRain said:
I get it now - partially.

FACE = 1111 1010 1100 1110
regroup = 001 111 101 011 001 110
Oct = 175316

But for .BE, it is not possible to do likewise but to use the method you suggest
0.BE = B/16 + E/256

Is this right?

Just to be clear, let's spell out the whole solution, using the regroup method for the entire number (you got the integer part -- I'm just adding the fractional part):

FACE.BE = 1111 1010 1100 1110.1011 1110
regroup = 001 111 101 011 001 110.101 111 100
Oct = 175316.574
 
  • #11
DoctorBinary said:
Just to be clear, let's spell out the whole solution, using the regroup method for the entire number (you got the integer part -- I'm just adding the fractional part):

FACE.BE = 1111 1010 1100 1110.1011 1110
regroup = 001 111 101 011 001 110.101 111 100
Oct = 175316.574

Thanks DoctorBinary. I fully understand where my mistake is now.

.BE = .1011 1110
regroup = .010 111 110
Oct = .276
That's why I thought we can't apply the same to the fractional part. But now I got it.

Thanks to mgb_phys and mathmate as well :)
 
  • #12
It's worth noting that the figures to the right of the decimal point are only used in maths HW questions.
Sorry for my confusion on the fractional part - in computers real numbers are stored as IEEE floating point format.
 
  • #13
WaterRain said:
Thanks DoctorBinary. I fully understand where my mistake is now.

.BE = .1011 1110
regroup = .010 111 110
Oct = .276
That's why I thought we can't apply the same to the fractional part. But now I got it.

Thanks to mgb_phys and mathmate as well :)

Hmm, seems like you've taken a step backwards. Why did you rewrite the fractional part? The way I had it was correct:

.BE = .1011 1110
regroup = .101 111 100
Oct = .574

To the right of the radix point you pad the 0s to the right, not left!
 
  • #14
I got it. I was showing what I did earlier which resulted in my mistake :)
 

Similar threads

  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 8 ·
Replies
8
Views
5K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 2 ·
Replies
2
Views
11K
Replies
4
Views
2K
  • · Replies 10 ·
Replies
10
Views
2K
  • · Replies 3 ·
Replies
3
Views
1K
  • · Replies 1 ·
Replies
1
Views
10K