開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの無料、light版)
- 言語: C
- コンパイラ: UNIX ccコンパイラ (汎用UNIX)
『実践プログラミング 第3版』 (Steve Oualline (著)、 望月 康司 (監修) (翻訳)、 谷口 功 (翻訳)、 オライリー・ジャパン、1998年、ISBN978-4900900646) II部(単純なプログラミング)の11章(ビット演算)11.10(プログラミング実習)自習11-1を解いてみる。
実習11-1.
コード(TextWrangler)
#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)) int main(){ int loc; void print_graphics(void); int x, y; char line[100]; for(loc = 0; loc < X_SIZE; ++loc){ SET_BIT(loc, loc); } printf("5 × 5: "); if(TEST_BIT(5,5)){ printf("true\n"); } else { printf("false\n"); } printf("5 × 6: "); if(TEST_BIT(5,6)){ printf("true\n"); } else { printf("false\n"); } print_graphics(); printf("5 × 5, 5 × 6をクリア\n"); CLEAR_BIT(5,5); CLEAR_BIT(5,6); print_graphics(); return (0); } void print_graphics(void){ int x, 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"); } }
入出力結果(Terminal)
$ cc -g -o sample sample.c $ ./sample 5 × 5: true 5 × 6: false 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 ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ ........................................ 5 × 5, 5 × 6をクリア 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 コメント:
コメントを投稿