интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
|
|
1 | |
Использовать битове операций для обнуления всех бит, кроме последних четырёх04.12.2012, 01:53. Показов 5432. Ответов 16
Метки нет (Все метки)
В задании имеется ввиду последние 4 бита старшего разряда. Как мне кажется, нужно воспользоваться оператором сдвига. Но вот как выяснить на сколько нужно сдвигать...
0
|
04.12.2012, 01:53 | |
Ответы с готовыми решениями:
16
последовательность инструкций для обнуления трех старших бит регистра DH, без изменения остальных бит Залипают страницы всех браузеров последних версий, кроме Explorer и Opera 12.17 Составить число из бит четырёх данных чисел (MASM32) Запись последних восьми бит |
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
||||||
04.12.2012, 03:38 | 2 | |||||
Хинт:
0
|
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
|
|
04.12.2012, 12:30 [ТС] | 3 |
Допустим, имеем беззнаковое целочисленное значение которое равно 307. Оно имеет битовую структуру 100110011. После обнуления 4-х битов старшего разряда, должно получиться 10011, т.е. число 19.
0
|
Неэпический
|
||||||
04.12.2012, 12:50 | 4 | |||||
0
|
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
|
|
04.12.2012, 13:00 [ТС] | 5 |
Спасибо, но вы обнулили биты начиная с младшего разряда, а нужно начиная со старшего...
0
|
Неэпический
|
|||||||||||
04.12.2012, 13:08 | 6 | ||||||||||
ну или вот:
0
|
Croessmah
|
04.12.2012, 13:16
#8
|
0
|
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
|
|
04.12.2012, 13:36 [ТС] | 9 |
Возможно я не правильно выразился, но как я уже говорил, есть число 307 его битовая структура 100110011, нужно обнулить первые биты начиная с самого старшего, положительно заряженного, т.е. в результате должно получиться 000010011 т.е. число 19.
Добавлено через 6 минут И сделать это исключительно при помощи битовых операций. Если бы нужно было обнулить четыре бита начиная с самого младшего, то это сделать достаточно просто: a &= a << 4; Добавлено через 50 секунд Между прочим говоря задание - из учебника, так что должно присутствовать решение.
0
|
Неэпический
|
||||||
04.12.2012, 13:56 | 10 | |||||
1
|
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
|
|
04.12.2012, 14:32 [ТС] | 11 |
Фича с подсчётом количества битов это куто)
Добавлено через 17 минут Да и рекурсивная функция - простая и удобная. В общем, спасибо Это код просто для примера.
0
|
Неэпический
|
|
04.12.2012, 14:34 | 12 |
она не работает, если передать её 0.
будет работать только для чисел больше 15(если не ошибаюсь) Этот код - просто для примера.
0
|
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
|
|
04.12.2012, 14:40 [ТС] | 13 |
Ну и наконец, спасибо, что проявили терпение и выдержку и за то, что дошли "до конца".
Добавлено через 2 минуты у меня size_t - 4 байта, вот только не знаю может оно иметь отрицательное значение... если да - то до 15 предел (на моей машине)...
0
|
Неэпический
|
||||||
04.12.2012, 15:27 | 14 | |||||
Я имел ввиду, если num<16, то не работает.
Что-то на ум ничего путного не лезет, но вот еще один вариант. Работает вроде правильно.
1
|
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
|
|
04.12.2012, 16:39 [ТС] | 15 |
Интересно, у меня ваша "старая" рекурсивная функция прекрасно работает (проверял на нескольких значениях и сверялся с калькулятором...)
0
|
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
|
|
04.12.2012, 16:45 [ТС] | 17 |
проверил ещё раз со значениями 1,2,3, 24, 34567775 - всё верно
Добавлено через 1 минуту ну да с 0 не работает, я просто его не использовал
0
|
04.12.2012, 16:45 | |
04.12.2012, 16:45 | |
Помогаю со студенческими работами здесь
17
Стоит ли использовать 2 потока для асинхронного выполнения двух независимых операций Обнуления всех положительных элементов в одномерном массиве Составить процедуру обнуления всех положительных элементов массива Какой тип (int или byte) использовать для операций с большими массивами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |