Example solution

Dependencies:   mbed

Committer:
eencae
Date:
Thu Feb 02 14:24:48 2017 +0000
Revision:
0:cb82516f2dce
Initial commit.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 0:cb82516f2dce 1 /* ELEC1620 Lab 2 Task 10
eencae 0:cb82516f2dce 2
eencae 0:cb82516f2dce 3 Bit-wise Operators
eencae 0:cb82516f2dce 4
eencae 0:cb82516f2dce 5 (c) Dr Craig A. Evans, Feb 2017
eencae 0:cb82516f2dce 6
eencae 0:cb82516f2dce 7 */
eencae 0:cb82516f2dce 8 #include "mbed.h"
eencae 0:cb82516f2dce 9
eencae 0:cb82516f2dce 10 int main()
eencae 0:cb82516f2dce 11 {
eencae 0:cb82516f2dce 12 char a = 34; // 0010 0010
eencae 0:cb82516f2dce 13 char b = 107; // 0110 1011
eencae 0:cb82516f2dce 14 printf("a = %i\n",a);
eencae 0:cb82516f2dce 15 printf("b = %i\n",b);
eencae 0:cb82516f2dce 16
eencae 0:cb82516f2dce 17 printf("We'll shift a by one place to the left and store in c.\n");
eencae 0:cb82516f2dce 18 printf("This is the same as multiplying by 2.\n");
eencae 0:cb82516f2dce 19 char c = a << 1; // 0100 0100 = 64 + 4 = 68
eencae 0:cb82516f2dce 20 printf("c = %i\n",c);
eencae 0:cb82516f2dce 21
eencae 0:cb82516f2dce 22 printf("We'll shift b by fives place to the right and store in d.\n");
eencae 0:cb82516f2dce 23 printf("This is the same as dividing by 2^5 = 32.\n");
eencae 0:cb82516f2dce 24 char d = b >> 5; // 0000 0011 = 2 + 1 = 3
eencae 0:cb82516f2dce 25 printf("d = %i\n",d);
eencae 0:cb82516f2dce 26 printf("Remember, these are integers so we lose the decimal places.\n");
eencae 0:cb82516f2dce 27
eencae 0:cb82516f2dce 28 printf("Now we'll set bit 6 of c using the bit-wise OR operation.\n");
eencae 0:cb82516f2dce 29 char e = c | (1<<6); // 0100 0100 | 0100 0000
eencae 0:cb82516f2dce 30 printf("It turns out bit 6 is already set and so the value doesn't change.\n");
eencae 0:cb82516f2dce 31 printf("e = %i\n",e);
eencae 0:cb82516f2dce 32
eencae 0:cb82516f2dce 33 printf("Finally we'll clear bit 2 of c using the bit-wise AND and NOT operation.\n");
eencae 0:cb82516f2dce 34 char f = c & ~(1<<2); // 0100 0100 & 1111 1011 = 0100 0000
eencae 0:cb82516f2dce 35 printf("f = %i\n",f);
eencae 0:cb82516f2dce 36 }