2013年11月19日火曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅡ部(単純なプログラミング)の11章(ビット演算)、11.8(ビットマップグラフィックス)、11.10(プログラミング実習)、実習11-6を解いてみる。

その他参考書籍

実習11-6.

コード

sample.c

#include <stdio.h>
int main()
{
    int n;
    char c;
    char line[100];
    while (1){
        printf("3整数型(8ビット char 符号付き)を入力: ");
        fgets(line, sizeof(line), stdin);
        if (line[0] == '\n'){
            break;
        }
        sscanf(line, "%d", &n);
        c = (char) n;
        int i;
        char m = 1;
        int bits = 0;
        for (i = 1; i < 8; i += 1){
            if ((m & n) != 0){
                bits += 1;
            }
            m <<= 1;
        }
        if ((m & n) != 0){
            bits += 1;
        }
        if (bits == 0){
            m = 0;
        } else {
            for (i = 1; i < bits; i += 1){
                m >>= 1;
            }
        }
        n = (int) m;
        printf("全てのビットを左端までシフト: %d\n", n);
    }
    return (0);
}

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
3整数型(8ビット char 符号付き)を入力: 170
全てのビットを左端までシフト: -16
3整数型(8ビット char 符号付き)を入力: 0
全てのビットを左端までシフト: 0
3整数型(8ビット char 符号付き)を入力: 1
全てのビットを左端までシフト: -128
3整数型(8ビット char 符号付き)を入力: 2
全てのビットを左端までシフト: -128
3整数型(8ビット char 符号付き)を入力: 3
全てのビットを左端までシフト: -64
3整数型(8ビット char 符号付き)を入力: 4
全てのビットを左端までシフト: -128
3整数型(8ビット char 符号付き)を入力: 5
全てのビットを左端までシフト: -64
3整数型(8ビット char 符号付き)を入力: -1
全てのビットを左端までシフト: -1
3整数型(8ビット char 符号付き)を入力: -2
全てのビットを左端までシフト: -2
3整数型(8ビット char 符号付き)を入力: 
$

0 コメント:

コメントを投稿