|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
31.01.2010, 21:37 | #1 |
Регистрация: 31.01.2010
Сообщений: 8
|
Побитовый сдвиг
Дано длинное целое неотрицательное число. Выполнить циклический сдвиг его шестнадцатеричного представления на k цифр вправо. на чистом си.
Код:
|
01.02.2010, 00:47 | #2 |
Пользователь
Регистрация: 15.01.2010
Сообщений: 22
|
только наверно не "y = k" а "y[i] = k" как я понял...чтоб число то в массив записать...чет первое что в голову лезет, это перевести массив в строку(в символьный массив)...то есть отдельно каждый символ массива y[i](для этого надо от y[i] отнять 0х30 ну или '0')...а потом опять эту строку перевести в число по формуле numb = numb * 10 + ch[i] - 0x30;....ну а потом уже сдвигать...думаю должно сработать...
Не забываем повышать рейтинг(для тех, кому помог)...
|
01.02.2010, 09:29 | #3 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
сдвинуть остальные биты (x shr 1) передвнуть выделенный бит ( z shl 3) 0001->1000 подготовить(очистить) место ( x and 1000) склеить результаты (x or z) повторить нужное число раз (сдвинуть нужное число бит сразу) P.S. все числа записаны в двоичной форме использовать битовые операции требуемого языка.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 01.02.2010 в 09:32. |
|
01.02.2010, 12:46 | #4 |
Пользователь
Регистрация: 15.01.2010
Сообщений: 22
|
прощу прощения, ошибся...при переводе числа в строку надо прибавлять 0х30 а не вычитать....
Не забываем повышать рейтинг(для тех, кому помог)...
|
01.02.2010, 18:44 | #5 |
Пользователь
Регистрация: 17.10.2009
Сообщений: 13
|
Код:
|
01.02.2010, 20:12 | #6 |
Пользователь
Регистрация: 15.01.2010
Сообщений: 22
|
ты лучше скажи что не получается, то есть что неправильно работает??как перевести из массива в число я ведь уже написал...осталось сдвигать..
Не забываем повышать рейтинг(для тех, кому помог)...
|
01.02.2010, 20:52 | #7 |
Пользователь
Регистрация: 17.10.2009
Сообщений: 13
|
дело в том что при переводе строки в число получается какая то ерунда
|
01.02.2010, 20:56 | #8 |
Пользователь
Регистрация: 17.10.2009
Сообщений: 13
|
ты написал формулу numb = numb * 10 + ch[i] - 0x30;
тоесть в моём случае это x=x*10+m[i]-0x30 ; А зачем умножать на 10? |
02.02.2010, 13:54 | #9 |
Пользователь
Регистрация: 15.01.2010
Сообщений: 22
|
если честно не знаю зачем умножать на 10(что-то с разрядами числа связано наверно) - просто прими эту формулу и все...вобщем все работать должно...сам проверял уже...у меня вывел...есть один вариант почему у тебя не получается...попробуй символьный массив обнулить перед использованием (memset(m, 0, sizeof(m))), то есть сразу после объявления...
Не забываем повышать рейтинг(для тех, кому помог)...
|
02.02.2010, 14:23 | #10 |
Пользователь
Регистрация: 17.10.2009
Сообщений: 13
|
ок попробую спасибо
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Циклический сдвиг | Mish92(21-09) | Помощь студентам | 0 | 07.11.2009 21:59 |
Сдвиг массива. | Джед | Общие вопросы C/C++ | 19 | 10.06.2009 16:44 |
C++ побитовый сдвиг | KOLYTFR | Помощь студентам | 1 | 03.06.2009 22:42 |
сдвиг строки | Анастасия123456789 | HTML и CSS | 7 | 24.02.2009 18:10 |
Сдвиг файла | OrdJONY | Общие вопросы Delphi | 13 | 21.12.2007 22:22 |