ivani493
|
|
1 | |
Побитовые операции (программа, которая интерпретирует старшие 3 бита как некоторое число n...)23.01.2013, 14:05. Показов 3806. Ответов 23
Метки нет (Все метки)
Уважаемые форумчане, нужна ваша помощь.
Нужно составить программу, которая интерпретирует старшие 3 бита как некоторое число n и оставшиеся разряды сдвинуть циклически влево на n разрядов. За помощь буду очень благодарен! |
23.01.2013, 14:05 | |
Ответы с готовыми решениями:
23
Как обнулить первые 4-е бита начиная с певого заряженного (первые - старшие биты) Работа со стеком. Программа, которая к вершине стека добавляет некоторое число, а следующему элементу присваивает значение предыдущего Дано 16-и битное слово, нужно записать старшие 3 бита в обратном порядке Побитовые операции: проверить, является ли число степенью двойки |
18 / 18 / 4
Регистрация: 18.05.2010
Сообщений: 83
|
|
23.01.2013, 14:27 | 2 |
0
|
ivani493
|
|
23.01.2013, 18:46 | 3 |
Да
|
4 / 4 / 4
Регистрация: 14.09.2012
Сообщений: 64
|
||||||
25.01.2013, 21:22 | 4 | |||||
интерпретирует старшие 3 бита как некоторое число n и оставшиеся разряды сдвинуть циклически влево на n разрядов.
0
|
25.01.2013, 22:40 | 5 | |||||
зачем выпендриваться с неймспейсами?
я нифига не понял. Где взято 3 бита то? Я предлагаю их брать как
Добавлено через 5 минут а ... там не в байте, а в инте биты!
1
|
4 / 4 / 4
Регистрация: 14.09.2012
Сообщений: 64
|
|||||||||||||||||||||
26.01.2013, 00:42 | 6 | ||||||||||||||||||||
Взял максимальное положение 1 без учета знакового бита, это t.
Добавлено через 1 час 17 минут Добавлено через 31 минуту Но как оно функционирует? Чему он возвращает high?
0
|
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
|
|||||||||||
26.01.2013, 03:36 | 7 | ||||||||||
Добавлено через 17 минут
0
|
4 / 4 / 4
Регистрация: 14.09.2012
Сообщений: 64
|
||||||
26.01.2013, 18:20 | 8 | |||||
0
|
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
|
|
26.01.2013, 19:18 | 9 |
Valli1, сдвинуть циклически
0
|
4 / 4 / 4
Регистрация: 14.09.2012
Сообщений: 64
|
|
26.01.2013, 19:33 | 10 |
А, что мое не правильно? А, блин вы про условие.Бегло быстро его прочитал ,особо не вдумываясь, точно, спасибо.
Добавлено через 8 минут Хотя какая разница, сдвигать на один бит 13 и 14 строки????
0
|
4 / 4 / 4
Регистрация: 14.09.2012
Сообщений: 64
|
||||||
26.01.2013, 21:30 | 12 | |||||
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
|
||||||
26.01.2013, 22:01 | 13 | |||||
старшие три бита ЧЕГО?
char? short? int? long? вот решение для char(8 бит) m число с которым нужно поработать
все циклические сдвиги делаются тремя операциями(4 если разрядность не равна базовым) два сдвига и один ИЛИ ( и И если разрядность не равна базовым)
0
|
4 / 4 / 4
Регистрация: 14.09.2012
Сообщений: 64
|
||||||
26.01.2013, 22:43 | 14 | |||||
значения (
P.S. "Я же только учусь."
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
|
||||||
26.01.2013, 23:34 | 15 | |||||
нет
это то что выходит с одной стороны приходит в другую допустим нужно сдвинуть байт (8 бит) влево циклически в нем число 01100011 11000110 первый сдвиг пока не отличается от простого сдвига 10001101 второй единица перешла из старшего разряда в младший 00011011 третий единица перешла из старшего разряда в младший 00110110 четвертый ноль перешел из старшего разряда в младший 01101100 пятый 11011000 шестой 10110001 седьмой 01100011 восьмой получили первоначальное число то же самое и со сдвигом вправо только из младшего значение переходит в старший в отличии от ассемблера в С нет команды циклического сдвига можно конечно тупо сделать это циклом проверяя младший(старший) бит
есть способ проще смотри 01100011 надо сдвинуть на три влево должно получится 00011011 видишь выделенные разряды ушли вправо делаем так пишу по шагам сдвигаем влево на три разряда 01100011<< 3= 00011000 сдвигаем вправо на разность размера числа( у нас 8 бит) и на число сдвига 01100011>> (8-3)=00000011 и складываем их логически (операция ИЛИ) 00011000 | 00000011= 00011011 всего три операции(четыре если считать вычитание)
1
|
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
|
|
27.01.2013, 00:16 | 16 |
Единственное, этот алгоритм корректно работает с беззнаковыми, а тупому циклу все равно-знаковые или беззнаковые. Сразу соглашусь, что сдвиги вообще корректно применять к беззнаковым.
1
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
|
|
27.01.2013, 00:27 | 17 |
имянно
если простой сдвиг вправо (деление на 2) еще имеет место быть для знаковых то для циклического результат ересь да и как можно циклически сдвинуть -2? циклический сдвиг это чисто битовая примочка я как то забыл акцентировать на этом внимание в примере сделал а в объяснении нет Не по теме: вспоминаю как я переходил на С для микроконтроллеров
0
|
4 / 4 / 4
Регистрация: 14.09.2012
Сообщений: 64
|
|
27.01.2013, 00:50 | 18 |
0
|
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
|
|||||||||||
27.01.2013, 02:21 | 19 | ||||||||||
а вот и код дизассемблера для сдвига вправо
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
|
|
27.01.2013, 02:32 | 20 |
если ты мне
то я давно уже знаю разницу между SHR (для беззнаковых) логический сдвиг и SAR (для знаковых) арифметический сдвиг
0
|
27.01.2013, 02:32 | |
27.01.2013, 02:32 | |
Помогаю со студенческими работами здесь
20
Используя побитовые операции, преобразовать десятичное число в двоичное Побитовые системы: Без операции деления на 2 определить, является ли число четным Побитовые операции - Длинное целое число разделить на четыре однобайтовых целых числа Побитовые операции: получить целое число, отбросив нечетные биты данного числа k Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |