Hello
Below are the functions to convert a 3 digit decimal to BCD format and to convert from 3 digit BCD to Binary. Can anyone please explain it clearly??
/************************************************************************/ /* Name : WORDToBCD3 to Converts a 3 digit decimal to BCD format */ *************************************************************************/ u16 WORDToBCD3(u16 value) { u16 bcdhigh = 0; while (value >= 100) { bcdhigh++; value -= 100; } bcdhigh <<= 4; while (value >= 10) { bcdhigh++; value -= 10; } return (bcdhigh << 4) | value; } /************************************************************************/ /* Name : BCD3ToWORD to convert from 3 digit BCD to Binary */ *************************************************************************/ u16 BCD3ToWORD(u16 value) { return (u16)((((value&0xF00)>>8)*100) + (((value&0x0F0)>>4)*10) + (value&0x0F)); }
>binary coded decimal - one decimal digit stored per nibble (half-byte).
Should be referenced as BCD numbers normally occupy one byte per decimal digit. packed BCD numbers use half byte or nibble for a decimal digit and in a byte are stored two decimal digits.
en.wikipedia.org/.../Binary-coded_decimal academic.evergreen.edu/.../bcd.htm
This process of representation of a value to the binary system is called encoding. So, the actual value of a byte(8bits) or a word(16bits) varies along with the encoding used to store the information.