Chapter 13 - Character and Bit Manipulation UPPER AND LOWER CASE Load and display the program UPLOW.C for an example of a program that does lots of character manipulation. More specifically, it changes the case of alphabetic characters around. It illustrates the use of four functions that have to do with case. It should be no problem for you to study this program on your own and understand how it works. The four functions on display in this program are all within the user written function, "mix_up_the_chars". Compile and run the program with the file of your choice. The four functions are; isupper(); Is the character upper case? islower(); Is the character lower case? toupper(); Make the character upper case. tolower(); Make the character lower case. Many more Classification and Conversion routines are listed on pages 10 and 11 of your Turbo C Reference Guide. CLASSIFICATION OF CHARACTERS Load and display the next program, CHARCLAS.C for an example of character counting. We have repeatedly used the backslash n character representing a new line. These are called escape sequences, and some of the more commonly used are defined in the following table; \n Newline \t Tab \b Backspace \" Double quote \\ Backslash \0 NULL (zero) A complete list of escape sequences available with your Turbo C compiler are listed on page 201 of your Turbo C Reference Manual. By preceding each of the above characters with the backslash character, the character can be included in a line of text for display, or printing. In the same way that it is perfectly all right to use the letter "n" in a line of text as a part of someone's name, and as an end-of-line, the other characters can be used as parts of text or for their particular functions. The program on your screen uses the functions that can determine the class of a character, and counts the characters in each class. The number of each class is Page 94 Chapter 13 - Character and Bit Manipulation displayed along with the line itself. The three functions are as follows; isalpha(); Is the character alphabetic? isdigit(); Is the character a numeral? isspace(); Is the character any of, \n, \t, or blank? As noted above, many more Classification Routines are listed on page 10 of your Turbo C Reference Guide. This program should be simple for you to find your way through so no explanation will be given. It was necessary to give an example with these functions used. Compile and run this program with any file you choose. THE LOGICAL FUNCTIONS Load and display the program BITOPS.C. The functions in this group of functions are used to do bitwise operations, meaning that the operations are performed on the bits as though they were individual bits. No carry from bit to bit is performed as would be done with a binary addition. Even though the operations are performed on a single bit basis, an entire byte or integer variable can be operated on in one instruction. The operators and the operations they perform are given in the following table; & Logical AND, if both bits are 1, the result is 1. | Logical OR, if either bit is one, the result is 1. ^ Logical XOR, (exclusive OR), if one and only one bit is 1, the result is 1. ~ Logical invert, if the bit is 1, the result is 0, and if the bit is 0, the result is 1. The example program uses several fields that are combined in each of the ways given above. The data is in hexadecimal format. It will be assumed that you already know hexadecimal format if you need to use these operations. If you don't, you will need to study it on your own. Teaching the hexadecimal format of numbers is beyond the scope of this tutorial. Run the program and observe the output. THE SHIFT INSTRUCTIONS The last two operations to be covered in this chapter are the left shift and the right shift instructions. Load the example program SHIFTER.C for an example using these two Page 95 Chapter 13 - Character and Bit Manipulation instructions. The two operations use the following operators; << n Left shift n places. >> n Right shift n places. Once again the operations are carried out and displayed using the hexadecimal format. The program should be simple for you to understand on your own, there is no tricky code. Page 96