演習2-6 K&R プログラミング言語C
2009年12月21日
演習2-6
問題文の日本語がちょっとわかりにくいが、以下のように動作する関数 setbits
を作る。
#include <stdio.h> unsigned setbits(unsigned x, int p, int n, unsigned y); int main(int argc, char *argv[]) { unsigned int x, y; int p, n; x = 62; /* 0011 1110 */ y = 12; /* 0000 1100 */ p = 4; n = 3; printf("x:%u\ny:%u\np:%d\nn:%d\nresult:%u\n", x, y, p, n, setbits(x, p, n, y)); return 0; } unsigned setbits(unsigned x, int p, int n, unsigned y) { /* m : マスク */ unsigned m; m = ~(~0 << n) << (p + 1 - n); /* 0001 1100 */ return (x & ~m) | (y & m); }
実行結果
$ ./ex2-6 x:62 y:12 p:4 n:3 result:46
プログラミング言語C 第2版 ANSI規格準拠
posted with amazlet at 09.11.27
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 9726
共立出版
売り上げランキング: 9726