This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How Char Numbers work??

I am having trouble understanding what happens in the 8051 Memory when numbers are stored as Char types. As I understand it when the letter A is store as a Char type the memory holds 0x41. When the number 191 is stored as a Char Type I would expect the memory to hold 3 Hex digits in a string starting with 0x31 for the number 1. This is not what happens.In fact 191 is stored as 0XBF which is the Hex value for 191. I don't understand why we bother using numbers as Char if they are stored the same way Int types are stored?? Can someone explain this??

Parents
  • This has nothing specifically to do with the 8051 or Keil.

    Computers deal only with numbers. It's up to the programmer how those numbers are interpreted.

    You can interpret the number as a code to represent a character, or you can interpret it just as a numeric value.

    You could also interpret it as a code to represent many other things; eg, days of the week, months of the year, colours, etc, etc,...

    Yes, the fact that 'C' calls its smallest data type "char" can be a little confusing when it is not being used to represent a character - but it doesn't actually limit its use.

    What you need to take care of is to distinguish a numeric value, eg 1234, from a string of characters "1234":
    the former is a single numeric value;
    the latter is a character '1' followed by a character '2' followed by a character '3' followed by a character '4' (and, in C, followed by a NUL to terminate the string).

Reply
  • This has nothing specifically to do with the 8051 or Keil.

    Computers deal only with numbers. It's up to the programmer how those numbers are interpreted.

    You can interpret the number as a code to represent a character, or you can interpret it just as a numeric value.

    You could also interpret it as a code to represent many other things; eg, days of the week, months of the year, colours, etc, etc,...

    Yes, the fact that 'C' calls its smallest data type "char" can be a little confusing when it is not being used to represent a character - but it doesn't actually limit its use.

    What you need to take care of is to distinguish a numeric value, eg 1234, from a string of characters "1234":
    the former is a single numeric value;
    the latter is a character '1' followed by a character '2' followed by a character '3' followed by a character '4' (and, in C, followed by a NUL to terminate the string).

Children