• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 684
  • Last Modified:

16 bit floating point binary

i have to write a c program to perform some arithmetic operations on 16 bit floating point binary numbers.

the format is as follows:


S= sign bit
B= biased exponent (bias = 16)
M= normalized matissa

i have to add two of them first and then substract. i dont even understand what is B and M.

please help me.

thanks a lot,
  • 4
  • 2
2 Solutions
Hi backwaters,

A floating point number consists of a normalized mantissa and an exponent, so that

M * 10 ^ E

is your number. A mantissa is normalized if it has only one digit in the rand 1...9 before the decimal point.

Have a look at


This also shows the "biasing" of the exponent. In the simplest case, the exponent biasing simply means it is a signed integer (like with IEEE 32 bit floats). But you can shift the exponent range either way, depending on your needs (if you need rather small or big numbers).

Here the biasing is the very same as in the 32 bit IEEEs (look for the "- 127 = "). Basically, the leftmost bit is the sign of your exponent.

As this appears to be homework, this is all I can do so far for you.

Good Luck!
Easily manage email signatures in Office 365

Managing email signatures in Office 365 can be a challenging task if you don't have the right tool. CodeTwo Email Signatures for Office 365 will help you implement a unified email signature look, no matter what email client is used by users. Test it for free!

Kent OlsenData Warehouse Architect / DBACommented:
Hi backwaters,

What you've been asked to do is code the floating point operations for a 16-bit register/word.  (Obviously homework.)

I assume that your code will perform the basic math functions (add, subtract, multiply, and divide).  Add and subtract can be coded as one function, multiply and divide are unique.

A 16 bit integer looks like this:


Exponential notation says that 1E+0 is the representation for 1 in base 10.  1E+6 is the exponential notation for a million, 1E+100 is a google.

If you consider the exponent to be in base 2 (binary) instead of base 10, the floating point arithmetic makes more sense.  1E+0 is 1, 1E+1 is 2, 1E+2 is 4, etc...  This simply says that shifting a 1 left by the number of bits in the exponent gives the number.

That's what your floating point format says, except that the exponent is biased.  Biasing the exponent means that the exponent can never be negative.  You've got a 5 bit exponent, so whatever the true value is, simply add 10000(2) to it to get the biased value.

Confused?  Don't be.  Let's convert the integer 1 to a floating point 1.  The way to do that is to insert the exponent into the 16 bit value in the correct location.

The exponent is 0 because we don't need to shift the 1.  A 1 is a 1 and we're starting with an integer 1.  We add the bias to it and the exponent becomes 10000(2) + 0 = 10000(2).  Inserting this value into the word gives us


This is an un-normalized 1.  To normalize the value, we need to left shift the mantissa until the top bit is a 1. For every bit that we shift the mantissa, we need to adjust the exponent by decrementing it 1.


There you have it -- a "normalized" 1 in the floating point format that you've described.

This is the foundation.  There's a lot more that you'll have to know/do to actually build the functions.

Good Luck!
Good explanation!

Kent OlsenData Warehouse Architect / DBACommented:
Hi Stefan,

I was interrupted so the post took longer to assemble than normal.  When I started typing there were no other replies....

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

We Need Your Input!

WatchGuard is currently running a beta program for our new macOS Host Sensor for our Threat Detection and Response service. We're looking for more macOS users to help provide insight and feedback to help us make the product even better. Please sign up for our beta program today!

  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now