Variables - Formats - Encoding - Binary

From FSDeveloper Wiki
Jump to: navigation, search

Placeholder for Variables - Formats - Encoding - Binary related info.

For passing info to gauges, or into missions via SimConnect applets.


Binary-Encoding

In a fixed-width binary code, each letter, digit, or other character, is represented by a sequence of bits of the same length,
usually indicated in code tables by the octal, decimal or hexadecimal notation for the value of that sequence of bits interpreted as a binary number.
i.e. A method of coding data, as sequences of characters.


Binary-coded decimal, (BCD),is a method of storing individual decimal based characters.
Binary-coded octal, (BCO), is the octal equivalent.


Example Legibility

Requires checking -

For legibility purposes only, the examples below include spaces, dots, hyphens, etc. as seperators.
Your code should not include those characters.


Binary-Coded Decimal (BCD)

Used in - ???

A method of storing individual digits for 'easy' manipulation.
The implementation used in FS is actually "Packed BCD", where one BCD digit is stored in each half byte, (aka nibble).


1 BYTE

Just for explaining the principle.
These are the BITs in a 8 bit number with their order value for a BCD encoded number:

8 4 2 1 . 8 4 2 1

Example -
0001-0111 is 1-7 which is 1x10 + 7x1 = 17
One BCD digit is stored in each half byte, (aka nibble).


Storage Types

BCD 16 or 32 defines the storage type -

typedef VAR16 BCD16, *PBCD16, **PPBCD16; // 4-digit BCD number (0000-9999)
typedef VAR32 BCD32, *PBCD32, **PPBCD32; // 8-digit BCD number (00000000-99999999)


BCD16 - 2 BYTES

Used in - ???

These are the BITs in a 16 bit number with their order value for a BCD encoded number:

8 4 2 1 . 8 4 2 1 . 8 4 2 1 . 8 4 2 1

This is 2 bytes and can store a 4 digit BDC16 encoded number,
with one BCD digit stored in each half byte, (aka nibble).

Example -
0011-0110 0010-0101 is 3-6 2-5 which is 3x100 + 6x10 + 2x1 + 5x0.1 = 362.5

Useage -
FS example required


Note -

For COM and NAV frequencies there's a legacy related matter -
Since the highest order digit in the instrument (gauge) is always 1 (one),
it is not recorded in the BCD representation to save space. (now only 4 digits have to be stored)

e.g.
For a frequency of 136.25
1 is assumed
so the recorded BCD is 3625


BCD32 - 4 BYTES

Used in - ADF Radios

These are the BITs in a 32 bit number with their order value for a BCD encoded number:

8 4 2 1 . 8 4 2 1 . 8 4 2 1 . 8 4 2 1 . 8 4 2 1 . 8 4 2 1 . 8 4 2 1 . 8 4 2 1

BCD32 is 4 bytes for an 8 digit BCD encoded number,
again with one BCD digit stored in each half byte, (aka nibble).

Example -
THIS EXAMPLE NEEDS CHECKING/CORRECTING
0001-0011 1000-0100 0101-0000 0000-0000 is 1-3 8-4 5-0 0-0 which is 1x1000 + 3x100 + 8x10 + 4x1 + 5x0.1 = 1384.5

Useage - ADF Radios
FS example required

Binary-Coded Octal (BCO)

Equivalent for Octal required.


Related

Hex-Decimal-Binary online converter at - http://flor.nl/dec2hex.html