Negative number representation across multiple architechture
        Posted  
        
            by Donotalo
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Donotalo
        
        
        
        Published on 2010-04-24T16:21:19Z
        Indexed on 
            2010/04/24
            16:23 UTC
        
        
        Read the original article
        Hit count: 289
        
I'm working with OKI 431 micro controller. It can communicate with PC with appropriate software installed. An EEPROM is connected in the I2C bus of the micro which works as permanent memory. The PC software can read from and write to this EEPROM.
Consider two numbers, B and C, each is two byte integer. B is known to both the PC software and the micro and is a constant. C will be a number so close to B such that B-C will fit in a signed 8 bit integer. After some testing, appropriate value for C will be determined by PC and will be stored into the EEPROM of the micro for later use.
Now the micro can store C in two ways:
- The micro can store whole two byterepresenting C
- The micro can store B-C as one bytesigned integer, and can later derive C from B and B-C
I think that two's complement representation of negative number is now universally accepted by hardware manufacturers. Still I personally don't like negative numbers to be stored in a storage medium which will be accessed by two different architectures because negative number can be represented in different ways. For you information, 431 also uses two's complement.
Should I get rid of the headache that negative number can be represented in different ways and accept the one byte solution as my other team member suggested? Or should I stick to the decision of the two byte solution because I don't need to deal with negative numbers? Which one would you prefer and why?
© Stack Overflow or respective owner