0 / 0 / 0
Регистрация: 21.10.2014
Сообщений: 7
|
|
1 | |
Функция, инвертирующая в целом числе n разрядов, начиная с позиции p21.10.2014, 21:39. Показов 3125. Ответов 12
Метки нет (Все метки)
Пожалуйста помогите. Надо написать функцию , которая возвращает число , полученное из целого числа x , в котором инвертированы n разрядов , начиная с позиции p , а остальные разряды оставлены без изменений. Проверять правильность значений n и p .
0
|
21.10.2014, 21:39 | |
Ответы с готовыми решениями:
12
Установить в целом числе биты в ноль, начиная с определенной позиции В длинном целом числе n поменять пары двоичных разрядов в зеркальном порядке Заменить в числе a v битов, начиная с n-й позиции Написать функцию, которая возвращает число, полученное из целого числа x, в котором единицы установлены в n разрядов, начиная с позиции p (крайний пра |
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
|
||||||
21.10.2014, 21:59 | 2 | |||||
Как-то так:
0
|
0 / 0 / 0
Регистрация: 21.10.2014
Сообщений: 7
|
|
21.10.2014, 22:11 [ТС] | 3 |
Спасибо, но можешь немного объяснить код...
0
|
3 / 3 / 0
Регистрация: 20.01.2014
Сообщений: 69
|
||||||
21.10.2014, 22:13 | 4 | |||||
Для f(777,4,4) возвращает 777, должно возвращать 1017. Попробуйте сами в калькуляторе - программист инвертировать 4 бита начиная с 4го.
Вот попробуйте(если n разрядов начиная с позиции p выходят за границу функция возвращает 0): Кликните здесь для просмотра всего текста
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
|
|
21.10.2014, 22:14 | 5 |
Что объяснять? Побитовая обработка начиная с позиции p. Нумерация с нуля.
0
|
0 / 0 / 0
Регистрация: 21.10.2014
Сообщений: 7
|
|
21.10.2014, 22:19 [ТС] | 6 |
Просто недавно начал учиться на С++, и не могу понять что да как мне сделать в этом задании
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
|
||||||
21.10.2014, 22:26 | 7 | |||||
BlackUser прав, сдвиг забыл. Вот так правильно:
Просто берётся единица в разряде p, выделяется соответствующий бит и либо сбрасывается, либо устанавливается. y - маска для бита.
0
|
0 / 0 / 0
Регистрация: 21.10.2014
Сообщений: 7
|
|
21.10.2014, 22:34 [ТС] | 8 |
а что такое маска бита?
Если не трудно, можешь написать полный код, типа с вводом х, n и p,а то туплю очень.
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
|
||||||
21.10.2014, 22:46 | 9 | |||||
Ну например надо выделить 3-й бит из байта. Маска будет 00001000. Т. е. все нули, а третий бит - 1.
Добавлено через 7 минут
0
|
0 / 0 / 0
Регистрация: 21.10.2014
Сообщений: 7
|
|
21.10.2014, 22:50 [ТС] | 10 |
Что это за библиотека?
Пишет что идентификатор _TCHAR не определен
0
|
Вездепух
11694 / 6373 / 1724
Регистрация: 18.10.2014
Сообщений: 16,066
|
||||||
22.10.2014, 03:08 | 11 | |||||
Странно, что автор уже приведенного кода не воспользовался готовой операцией битовой инверсии '^' и вместо этого взялся выписывать ее вручную через другие битовые операции.
На самом деле расписывать циклы совершенно не обязательно.
Осталось только добавить проверку правильности параметров...
1
|
_Ivana
|
22.10.2014, 05:12
#12
|
Не по теме: Не думал, что буду ставить вам +,TheCalligrapher - не всегда ваша критика по делу, но в данном случае это именно оно - и кто-то должен был сказать, что инвертировать биты надо ксором, а не сомнительными другими алгоритмами.
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
|
|
22.10.2014, 08:04 | 13 |
Сомнительными алгоритмами? А по существу есть возражения? Задача решена.
#include "stdafx.h", _tmain - это проект для VS, можно убрать, сделать простой main().
0
|
22.10.2014, 08:04 | |
22.10.2014, 08:04 | |
Помогаю со студенческими работами здесь
13
Функция вставляющая подстроку начиная с заданной позиции Проверить, как изменилось количество разрядов в числе M по сравнению с количеством разрядов числа N Проверить как изменится количество разрядов в числе M по сравнению с количеством разрядов числа N Функция, удаляет из строки заданное количество символов, начиная с заданной позиции Функция Delete(s,n,l) Назначение: удаление из строки s подстроки, начиная с позиции n, длиной l Функция удаляет из строки заданное количество символов, начиная с заданной позиции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |