The C Programming Language練習問題2-7
1531 ワード
テーマは1つの関数invert(x,p,n)を編纂して、この関数はxに対して以下の操作を実行した後の結果値を返します:xの中でp位から始まるn個(バイナリ)の位を逆(つまり、1は0になって、0は1になります)、xの残りの各位は変わらないでください.
テーマ解析はp位から左に操作すると仮定する.
コード実装
テーマ解析はp位から左に操作すると仮定する.
コード実装
#include
unsigned inverttemp(unsigned x, int p, int n);
int main()
{
int a;
a = 235;
printf("%d
", inverttemp(a, 4, 3));
}
unsigned inverttemp(unsigned x, int p, int n)
{
int i, j, m;
i = (x >> p) & ~(~0 << n);
printf("i=%d
", i);
i = (~i) & ~(~0 << n);
x = (x & ~(~0 << p)) | ((((x >> (p + n)) << n) | i) << p);
printf("i=%d
", x);
return x;
}