開発環境
- 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 コメント:
コメントを投稿