開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- C (プログラミング言語)
- Clang (コンパイラ)
C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅡ部(単純なプログラミング)の11章(ビット演算)、11.8(ビットマップグラフィックス)、11.10(プログラミング実習)、実習11-1を解いてみる。
その他参考書籍
- プログラミング言語C 第2版 ANSI規格準拠 (B.W. カーニハン D.M. リッチー (著)、 石田 晴久 (翻訳)、共立出版)
- プログラミング言語Cアンサー・ブック 第2版 (クロビス・L.トンド、スコット・E.ギンペル(著)、矢吹 道郎(翻訳))
実習11-1.
コード
sample.c
#include <stdio.h>
#define X_SIZE 40
#define Y_SIZE 60
char graphics[X_SIZE / 8][Y_SIZE];
#define SET_BIT(x, y) graphics[(x)/8][y] |= (0x80 >> ((x) % 8))
#define CLEAR_BIT(x, y) graphics[(x)/8][y] &= ~(0x80 >> ((x) % 8))
#define TEST_BIT(x, y) (graphics[(x)/8][y] & (0x80 >> ((x) % 8))) > 0
int main()
{
int loc;
void print_graphics(void);
for (loc = 0; loc < X_SIZE; ++loc){
SET_BIT(loc, loc);
}
print_graphics();
printf("\n");
CLEAR_BIT(19, 19);
CLEAR_BIT(0, 5);
print_graphics();
printf("\n");
printf("0 × 0: %d\n", TEST_BIT(0, 0));
printf("0 × 5: %d\n", TEST_BIT(0, 5));
printf("19 × 19: %d\n", TEST_BIT(19, 19));
printf("20 × 20: %d\n", TEST_BIT(20, 20));
return (0);
}
void print_graphics(void)
{
int x;
int y;
unsigned int bit;
for (y = 0; y < Y_SIZE; ++y){
for (x = 0; x < X_SIZE / 8; ++x){
for (bit = 0x80; bit > 0; bit = (bit >> 1)){
if ((graphics[x][y] & bit) != 0){
printf("X");
} else {
printf(".");
}
}
}
printf("\n");
}
}
makefile
CC=cc CFLAGS=-g sample: sample.c $(CC) $(CFLAGS) -o sample sample.c clean: rm -f sample
入出力結果(Terminal)
$ make cc -g -o sample sample.c $ ./sample X....................................... .X...................................... ..X..................................... ...X.................................... ....X................................... .....X.................................. ......X................................. .......X................................ ........X............................... .........X.............................. ..........X............................. ...........X............................ ............X........................... .............X.......................... ..............X......................... ...............X........................ ................X....................... .................X...................... ..................X..................... ...................X.................... ....................X................... .....................X.................. ......................X................. .......................X................ ........................X............... .........................X.............. ..........................X............. ...........................X............ ............................X........... .............................X.......... ..............................X......... ...............................X........ ................................X....... .................................X...... ..................................X..... ...................................X.... ....................................X... .....................................X.. ......................................X. .......................................X ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ X....................................... .X...................................... ..X..................................... ...X.................................... ....X................................... .....X.................................. ......X................................. .......X................................ ........X............................... .........X.............................. ..........X............................. ...........X............................ ............X........................... .............X.......................... ..............X......................... ...............X........................ ................X....................... .................X...................... ..................X..................... ........................................ ....................X................... .....................X.................. ......................X................. .......................X................ ........................X............... .........................X.............. ..........................X............. ...........................X............ ............................X........... .............................X.......... ..............................X......... ...............................X........ ................................X....... .................................X...... ..................................X..... ...................................X.... ....................................X... .....................................X.. ......................................X. .......................................X ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ 0 × 0: 1 0 × 5: 0 19 × 19: 0 20 × 20: 1 $
0 コメント:
コメントを投稿