На главную страницу

Решения к упражнениям из книги "Язык программирования С" Б. Керниган и Д. Ритчи

Упражнение 2.7.


Напишите функцию invert(x,p,n), возвращающую свой аргумент x, в котором обращены n бит, начиная с позиции p(т.е. единичные биты заменены нулевыми и наоборот), а остальные не тронуты.
----------
/* Exercise 2.7 from "The C programming language" book by K&R */

#include <stdio.h>

/* invert n bit from position p in x */
unsigned invert(unsigned x, unsigned p, unsigned n)
{
	return (x ^ (~(~0 << n) << (p+1-n)));
}

int main(void)
{
	printf("%u\n", invert(0x00, 5, 2));
	return 0;
}
	
----------

Последнее изменение: 18.05.2011