// ==========================================================================
// $Id: bitwise_operator.cpp,v 1.1 2006/09/07 20:06:17 jlang Exp $
// CSI2372 example Code for lecture 1
// ==========================================================================
// (C)opyright:
//
//   Jochen Lang
//   SITE, University of Ottawa
//   800 King Edward Ave.
//   Ottawa, On., K1N 6N5
//   Canada. 
//   http://www.site.uottawa.ca
// 
// Creator: jlang (Jochen Lang)
// Email:   jlang@site.uottawa.ca
// ==========================================================================
// $Log: bitwise_operator.cpp,v $
// Revision 1.1  2006/09/07 20:06:17  jlang
// Initial check-in lecture 0-2
//
//
// ==========================================================================
#include <iostream>
#include <iomanip>

using std::cout;
using std::endl;
using std::hex;
using std::dec;
using std::showbase;
using std::noshowbase;
using std::setw;

int main()
{
  char cVal = -1;
  unsigned char ucVal = 255;

  cout << showbase;

  ucVal &= cVal;
  cout << setw(4) << (short) ucVal << " corresponds to ";
  cout << hex << (short) ucVal << dec << endl;
  cVal &= ucVal;
  cout << setw(4) << (short) cVal << " corresponds to ";
  cout << hex << (((short) cVal) & 0x00FF) << dec << endl;

  ucVal >>= 1;
  cout << setw(4) << (short) ucVal << " corresponds to ";
  cout << hex << (short) ucVal << dec << endl;
  cVal >>= 1;
  cout << setw(4) << (short) cVal << " corresponds to ";
  cout << hex << (((short) cVal) & 0x00FF) << dec << endl;

  cout << noshowbase;

  return 0;
}
