1、
#include <stdio.h> unsigned set_n(unsigned x, int pos, int n) { int i; for(i = pos; i <= pos + n - 1; i++) { x = x | 1U << i; } return x; } unsigned reset_n(unsigned x, int pos, int n) { int i; for(i = pos; i <= pos + n - 1; i++) { x = x & ~(1U << i); } return x; } unsigned inverse_n(unsigned x, int pos, int n) { int i; for(i = pos; i <= pos + n - 1; i++) { x = x ^ 1U << i; } return x; } int main(void) { unsigned x; int pos, n; puts("please intput the test number ,move bits, and range span."); printf("x = "); scanf("%u", &x); printf("pos = "); scanf("%d", &pos); printf("n = "); scanf("%d", &n); printf("set 1 = %u ", set_n(x, pos, n)); printf("set 0 = %u ", reset_n(x, pos, n)); printf("inverse = %u ", inverse_n(x, pos, n)); return 0; }
2、
#include <stdio.h>
unsigned set_n(unsigned x, int pos, int n)
{
int i;
for(i = pos; i <= pos + n - 1; i++)
{
x = x | 1U << i;
}
return x;
}
unsigned reset_n(unsigned x, int pos, int n)
{
int i;
for(i = pos; i <= pos + n - 1; i++)
{
x = x & ~(1U << i);
}
return x;
}
unsigned inverse_n(unsigned x, int pos, int n)
{
int i;
for(i = pos; i <= pos + n - 1; i++)
{
if(x >> i & 1U)
x = x & ~(1U << i);
else
x = x | 1U << i;
}
return x;
}
int main(void)
{
unsigned x; int pos, n;
puts("please input the test number pos span.");
printf("x = "); scanf("%u", &x);
printf("pos = "); scanf("%d", &pos);
printf("n = "); scanf("%d", &n);
printf("set 0 = %u
", set_n(x, pos, n));
printf("set 1 = %u
", reset_n(x, pos, n));
printf("inverse = %u
", inverse_n(x, pos, n));
return 0;
}
3、
#include <stdio.h> unsigned set_n(unsigned x, int pos, int n) { int i; for(i = pos; i <= pos + n - 1; i++) { x = x | 1U << i; } return x; } unsigned reset_n(unsigned x, int pos, int n) { int i; for(i = pos; i <= pos + n - 1; i++) { if(x & 1U << i) x = x ^ 1U << i; else x = x; } return x; } unsigned inverse_n(unsigned x, int pos, int n) { int i; for(i = pos; i <= pos + n - 1; i++) { x = x ^ 1U << i; } return x; } int main(void) { unsigned x; int pos, n; puts("please input test number, pos and span."); printf("x = "); scanf("%u", &x); printf("pos = "); scanf("%d", &pos); printf("n = "); scanf("%d", &n); printf("set 1 = %u ", set_n(x, pos, n)); printf("set 0 = %u ", reset_n(x, pos, n)); printf("inverse = %u ", inverse_n(x, pos, n)); return 0; }