2014年3月8日土曜日

開発環境

C++実践プログラミング (スティーブ オウアルライン (著)、Steve Oualline (原著)、Steve Oualline(原著)、望月 康司(翻訳)、クイープ(翻訳) 、オライリー・ジャパン)のⅡ部(シンプルなプログラミング)の11章(ビット演算)、11.8(ビットマップグラフィックス)、実習 11-5.を解いてみる。

その他参考書籍

実習 11-5.

コード(BBEdit, Emacs)

sample195_4.cpp

#include <iostream>

int main()
{
  char left(char n);
  char c = 0xf0;
  char d = left(0x56);
  char e = 0;
  char f = left(0);
  char h = 0x80;
  char i = left(1);
  char j = left(0x02);
  char k = left(0x10);
  
  std::cout << c << ", " << d << '\n';
  std::cout << e << ", " << f << '\n';
  std::cout << h << ", " << i << ", " << j << ", " << k << '\n';

  return (0);
}

int count_bit(char n)
{
  int count = 0;
  
  if (n >= 0) {
    while (n != 0) {
      if ((n & 1) == 1) {
        ++count;
      }
      n >>= 1;
    }
  } else {
    char m = 1;
    while (n != 0) {
      if ((n & m) != 0) {
        ++count;
        n = n ^ m;
      }
      m <<= 1;
    }
  }
  return count;
}

char left(char c)
{
  char d = 0x80;
  int count = count_bit(c);
  if (count == 0) {
    return 0;
  }
  return d >> (count - 1);
}

Makefile

#
# FSFのg++コンパイラ用のMakefile
#
CC=g++
CFLAGS=-g -Wall
all: sample195_6

sample195_6: sample195_6.cpp
 ${CC} ${CFLAGS} -o sample195_6 sample195_6.cpp

clean:
 rm sample195_6

入出力結果(Terminal)

$ make && ./sample195_6
g++ -g -Wall -o sample195_6 sample195_6.cpp
-16, -16
0, 0
-128, -128, -128, -128
$

0 コメント:

コメントを投稿