We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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.