summaryrefslogtreecommitdiff
path: root/reference/C/EXAMPLES/and.c
blob: 5844f61dd8abeff87bdcc5a23cd88b67de684d16 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/****************************************************************************
 *
 * Purpose: To show the effect of a bitwise AND (&) by converting 
 * 	    an ASCII graphic extension into its character equivalent.
 * Author:  M.J. Leslie.
 * Date:    04-Mar-95
 *
 ****************************************************************************/

main()
{
					/*
					 * Hex E6 looks like this in binary
					 *  
					 * 1110 0110
					 *  
					 * UNSIGNED is used to stop C using    
					 * first 1 as an indicator of the sign
					 */
    unsigned char value='\xE6';

					/* Hex 7F looks like this in binary
					 *
					 * 0111 1111
					 */

    printf("%2X %2X \n", value, (value & '\x7F'));

					/* A bitwise AND has the effect of 
					 * filtering unwanted bits. 
					 *
					 * 1110 0110 (E6) AND
					 * 0111 1111 (7F)
					 * --------- 
					 * 0110 0110 (66)
					 */
}
/****************************************************************************
 *
 * Program results are:
 *
 *	E6 66
 *
 ****************************************************************************/