0 / 0 / 1
Регистрация: 29.12.2015
Сообщений: 3
1

Функция возвращаеющая число полученное инвертированием заданных разрядов

10.04.2016, 21:13. Показов 1155. Ответов 1
Метки нет (Все метки)

Помогите написать прогу.
Написать функцию, которая возвращает число, полученное из числа x, в котором n разрядов, начиная с позиции p, заменены на n инвертированных правых разрядов числа y, а остальные разрядов оставлены без изменений (крайний правый бит считать нулевым по номеру).

По логике нужно делать через битовую маску но на практике даже начать не могу.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2016, 21:13
Ответы с готовыми решениями:

Число, полученное отбрасыванием старшего и младшего разрядов. Время работы
Напишите функцию static int Cut (int n), которая по данному натуральному числу n возвращает...

Определить число, полученное перестановкой разрядов десятков и сотен исходного числа
Помогите решить задачу в Delphi Задача Дано натуральное четырехзначное число N. Определить...

Написать функцию, которая возвращает число, полученное из целого числа x, в котором единицы установлены в n разрядов, начиная с позиции p (крайний пра
Написать функцию, которая возвращает число, полученное из целого числа x, в котором единицы...

Функция, возвращающая число, полученное из целого числа
Выдали задание, но я не могу разобратся в логической цепочки . Не могу понять как написать ее...

1
0 / 0 / 1
Регистрация: 29.12.2015
Сообщений: 3
10.05.2016, 22:38  [ТС] 2
Лучший ответ Сообщение было отмечено Gibernar как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <stdio.h>
#include <math.h>
 
int vivod_po_bitam(unsigned int k)
{
    unsigned int d,f,bit;
    f=k;
    for(d=0;f!=0;d++)
        f»=1;
    if (d==0)
        d=1;
    for(;d>=1;d--)
    {
        bit=k;
        bit»=d-1;
        bit«=31;
        bit»=31;
        printf("%d",bit);
    }
    
    return d;
}
 
int deistvie(unsigned int x,unsigned int y,unsigned int n,unsigned int p)
{
    unsigned int c;
    c=x;
    printf("\nx=%d\n",x);
    vivod_po_bitam(x);
    printf("\ny=%d \n",y);
    vivod_po_bitam(y);
    y=~y;
    y«=32-n;
    y»=32-n;
    y«=p;
    printf("\ny=%d \n",y);
    vivod_po_bitam(y);
    x»=n+p;
    x«=n+p;
    printf("\nx=%d \n",x);
    vivod_po_bitam(x);
    x|=y;
    c«=32-p;
    c»=32-p;
    x|=c;
    printf("\nc=%d \n",c);
    vivod_po_bitam(c);
    printf("\nx=%d\n",x);
    
    return x;
    
}
 
int main()
{
    unsigned int x,y,p,n;
    printf("vvedite x=");
    scanf("%d",&x) ;
    printf("vvedite y=");
    scanf("%d",&y) ;
    printf("vvedite n=");
    scanf("%d",&n) ;
    printf("vvedite p=");
    scanf("%d",&p) ;
    
    x=deistvie(x,y,n,p);
    printf("x=%d\n",x);
    vivod_po_bitam(x);
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.05.2016, 22:38
Помогаю со студенческими работами здесь

Получить третье число путем логического сложения четных разрядов первого числа и нечетных разрядов второго
Нужна твоя помощь в TASM: нужно написать программу,а я не понимаю: Даны 2 числа в двоичном коде....

Определить число, получаемое инвертированием натурального числа
Определить число, получаемое инвертированием натурального числа, например 12345 - 54321. Число...

Функция invert, которая возвращает число,полученное записью всех цифр некоторого натурального N в обратном порядке
Разработайте функцию invert,которая возвращает число,полученное записью всех цифр некоторого...

Выведите число, которое получается из числа A инвертированием i-го бита
Входные данные: Дано целое число A и натуральное число i. Выходные данные: Выведите число,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru