Blackfin processors support fractional data, which is fixed-point and has advantages over floating-point data for real-time applications on Blackfin processors because 16-bit fractional data is smaller. Floating-point operations are implemented in software and are bigger and slower. For example, floating-point data is 4 bytes per value for single precision and 8 bytes per value for double precision. 16-bit fractional data is 2 bytes per value and 32-bit fractional data is 4 bytes per value. Also, single-precision, floating-point addition takes 140 cycles while fixed-point addition takes one cycle.
Fractional data is commonly represented as a 16-bit, two's complement, fixed-point value in 1.15 notation, which means 15 binary digits after the decimal point. Data in the 1.15 notation can range from –1.0 to 0.99996. In comparison, 32-bit integers use 32.0 notation, which means no binary digits after the decimal point.
![]() |
Note Other fractional notations are possible, but these additional notations are not supported by the Embedded Module for Blackfin Processors. |
The internal representation of a number in 1.15 and 1.31 notation and the value of each bit is as follows:

To find the value of a fractional number, add all of the bit weights for which the bit in the fractional number is set.
Fractional data is represented by the fract16 and fract32 data types. These data types are derived data types and are not intrinsic to LabVIEW. In LabVIEW, these derived data types are based on the intrinsic definition for 16-bit and 32-bit integers, respectively.
Use the Blackfin Conversion VIs to convert between fractional data and single-precision, floating-point numerics and complex single-precision, floating-point numerics.
One implication of the fract16 and fract32 derived data types is that you cannot use the standard LabVIEW Add, Subtract, Multiply, or Divide functions. For example, multiplication and division of fractional data involves an additional shift operation to convert the product or quotient to a fractional notation. While fractional addition and subtraction are similar to the equivalent integer operations, the two operations do not necessarily produce the same results.
Fractional operations and integer operations handle overflow differently. For integer operations, the most significant bit of the result is typically discarded, which makes positive results negative and negative results positive. Fractional operations commonly use a technique known as saturation to handle an overflow condition. Saturation involves setting the result to the largest positive value if the overflow returns a negative value. Conversely, saturation sets the result to the largest negative number if the overflow returns a positive value.