Не выполняется проверка условия - C (СИ)
Формулировка задачи:
Добрый день!
Задача:
Составить функцию inv (x, q, m), что возвращает x с инвертированными m битами, начиная с позиции q (остальные биты не изменяются).
Листинг программы
- #include "stdafx.h"
- #include "stdio.h"
- #include "conio.h"
- double Pow(double x, int y)
- {
- return y > 0 ? x * Pow(x, y - 1) : !y ? 1.0 : 1.0 / Pow(x, -y);
- }
- int _tmain(int argc, _TCHAR* argv[])
- {unsigned int x=48;
- int q=0,m=5;
- int i=32,s;
- m=Pow(2.0,q+m);
- q=Pow(2.0,q);
- for (i=q;i<=m;i*=2)
- {
- if (x&i==0)//Вот здесь почему то не хочет выполняться проверка всегда кидает на else
- x=x & ~i;
- else
- x=x|i;
- }
- printf("%i",x);
- getch();
- }
Решение задачи: «Не выполняется проверка условия»
textual
Листинг программы
- #include <iostream>
- #include <math.h>
- using namespace std;
- int mask (unsigned x, char q , char m);
- int main()
- {
- cout << mask(15,2,2) << endl;
- return 0;
- }
- int mask (unsigned x, char q , char m)
- {
- unsigned begin = pow(2 , q + m) - 1;
- unsigned end = ~(unsigned)(pow(2 , q ) - 1) ;
- return x^(begin&end);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д