Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Алгоритмы и теория программирования


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Алексеев Владимир Николаевич
Статус: Мастер-Эксперт
Рейтинг: 355
∙ повысить рейтинг »
CradleA
Статус: Мастер-Эксперт
Рейтинг: 21
∙ повысить рейтинг »
solowey
Статус: Академик
Рейтинг: 3
∙ повысить рейтинг »

Алгоритмы и теория программирования

Номер выпуска:243
Дата выхода:12.09.2021, 21:45
Администратор рассылки:Зенченко Константин Николаевич (Старший модератор)
Подписчиков / экспертов:2 / 17
Вопросов / ответов:3 / 7

Консультация # 36897: Здравствуйте! Возникла проблема в понимании "нетривиального" кода: a[i>>SHIFT] & (1<<(i & MASK)) где a - массив интеджеров, i - интеджер, SHIFT = 5, MASK = 0х1F А что собственно говоря происходит? Если можно по шагам, или ссылочку где это по шагам рассписано... К примеру i = 10 ...
Консультация # 168969: Здравствуйте уважаемые эксперты. Я не имею никакого представления о программировании но очень хочу стать программистом , я еще учусь в школе Подскажите пожалуйста, какой для меня самый подходящий язык и что мне нужно читать, над чем работать? Заранее спасибо! ...
Консультация # 61223: Доброе время суток, уважаемые эксперты. появилась такая задача: Даны два числа A и B (числа от1 до 100), нужно возвести число А в степень В, а В в степень А и найти их разницу, но при значениях 99 и 100 результат получается 199 значным. Подскажите как работать с такими числами(BCD- в делфи только 64 знака). Зарание благодарен....

Консультация # 36897:

Здравствуйте!

Возникла проблема в понимании "нетривиального" кода:

a[i>>SHIFT] & (1<<(i & MASK))

где a - массив интеджеров, i - интеджер, SHIFT = 5, MASK = 0х1F

А что собственно говоря происходит? Если можно по шагам, или ссылочку где это по шагам рассписано...
К примеру
i = 10
10>>5
будет
..

Дата отправки: 06.03.2006, 17:47
Вопрос задал: Zitz
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Татьяна:

Здравствуйте, Zitz!
Ну это типичное применение битовых операций. Ну к примеру, я думаю, не надо говорить, что каждое число представляется в виде бит, т.е. к примеру
а = 10000000b - соответствует числу 128 в беззнаковом байте
>> - означает операцию битового сдвига, т.е. если применить ее к а, то получим
01000000 , что соответствует 64.
Аналогична операция <<
что касается &, то это битовое "И", т.е. 1&0=0 , 0&0=0, 1&1 = 1
а что касается представленного выражения, то это надо смотреть в контексте, по крайней мере нужные операции уже описаны :).
Желаю удачи

Консультировал: Татьяна
Дата отправки: 06.03.2006, 18:36
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Лысков Игорь Витальевич (Мастер-Эксперт):

Здравствуйте, Zitz!
У нас есть следующий масив:
a[j] = b31...b0, где a[j] - j-й 32-разрядный элемент массива а, b31...b0 - биты j-го элемента
Будем считать наш массив а массивом битов со сквозной нумерацией 0-(32*n-1), где n - размерность массива a

Так вот, происходит проверка заданного бита по его сквозному номеру в заданном массиве 32-битных значений.
Скорее всего, для использования в условном операторе.

Каким образом это работает? Да очень просто!
i = 10 = 0x0a
i>>5 = 0 (тоже самое - разделить на 2 в степени 5, т.е.32) - получили индекс
i&0x1f = 10 (тоже самое - остаток от деления на 32)
1<<10 = 0x00000400 (получили маску бита)
Ну и, наконец, a[0] & 0x00000400 даст нам состояние 10-го бита

i = 33 = 0x21
i>>5 = 1 (тоже самое - разделить на 2 в степени 5, т.е.32) - получили индекс
i&0x1f = 0x01 (тоже самое - остаток от деления на 32)
1<<1 = 0x00000002 (получили маску бита)
Ну и, наконец, a[1] & 0x00000002 даст нам состояние 33-го бита

Консультировал: Лысков Игорь Витальевич (Мастер-Эксперт)
Дата отправки: 06.03.2006, 18:43
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 168969:

Здравствуйте уважаемые эксперты. Я не имею никакого представления о программировании но очень хочу стать программистом , я еще учусь в школе Подскажите пожалуйста, какой для меня самый подходящий язык и что мне нужно читать, над чем работать? Заранее спасибо!

Дата отправки: 05.06.2009, 01:38
Вопрос задал: Бахlарчи
Всего ответов: 3
Страница онлайн-консультации »


Консультирует Калеев Владимир Викторович:

Здравствуйте, Бахlарчи!
Я начал заниматься этим в школе с 10-го класса на уроках информатики. Язык изучали QBasic.
На тему "с какого языка начать обучение" можно спорить бесконечно. Лично я бы посоветовал начать с Pascal. Книг для начинающих программистов сейчас навалом как в обычных так и в интернет магазинах. Я предпочитаю заказывать через интернет по почте. Но сразу закупать книги стопками я не советую. Проще поискать подобные книги и статьи в интернете, попробовать решить какие-нибудь задачи из них, а потом сделать вывод, та ли это профессия которой вы хотите посвятить всю жизнь.
Как альтернатива учебнику есть игра Colobot. В ней в игровой форме вы можете научиться программировать на С++ подобном языке.

Консультировал: Калеев Владимир Викторович
Дата отправки: 05.06.2009, 05:58
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Ivol84:

Здравствуйте, Бахlарчи! У нас в технаре, когда начинал учиться использовали для таких целей Pascal. Но я рекомендую начинать с C/С++.

Консультировал: Ivol84
Дата отправки: 05.06.2009, 11:55
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Зенченко Константин Николаевич (Старший модератор):

Здравствуйте, Бахlарчи.

Я не буду Вам советовать конкретный язык программирования, это Вам выбирать самому. Для облегчения Вашего выбора постараюсь их классифицировать:
- Процедурный язык программирования;
- Язык функционального программирования;
- Объектно-ориентированный язык программирования;
- Декларативный язык программирования.
Любой язык программирования, при написании программ требует определеннго образа мышления, характерного для каждой группы языков.
Если поп росить несколько программистов оценить любую из групп и раставить названия языков в порядке увеличения(уменьшения) сложности понимания(читаемости кода) языка программирования. Вы получите совершенно разные результаты, т.к. мнения программистов будут субъективны, зависящие от времени потраченного на его изучение(для кого-то это было трудно, другому легко).

Ещё на один вопрос Вы должны сами ответить: Программстом в какой области(системным, прикладным, web и т.д.) Вы хотите стать? Т.к. каждая из этих областей накладываетс на программиста определенные требования к знаниям, в том чис ле и языков программирования.

Все ссылки в ответе, на материал из Википедии, по ним Вы можете найти ещё и краткое описание конкретного языка программирования принаждлежащего каждой группе и составить своё представление о программировании.
Удачи!

Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 09.06.2009, 18:40
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 61223:

Доброе время суток, уважаемые эксперты.
появилась такая задача: Даны два числа A и B (числа от1 до 100), нужно возвести число А в степень В, а В в степень А и найти их разницу, но при значениях 99 и 100 результат получается 199 значным.
Подскажите как работать с такими числами(BCD- в делфи только 64 знака).
Зарание благодарен.

Дата отправки: 04.11.2006, 01:33
Вопрос задал: Вилков Николай Юрьевич/Twister
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Олекса aka SoW:

Здравствуйте, Вилков Николай Юрьевич/Twister!
Для работы с очень большыми числами нужно применять "длинную" арифметику. Более подробно об етом вопросе смотрите вопрос №61067. В приложении написан код, которий возносит число 9 в любую степень. Время подношения в степень 1000 равна примерно 2 сек (на Duron 800). Думаю, по етому примеру вы сможете сделать то, что вам нужно. Если возникнут вопросы, пишите мне на личную пошту - буду рад помочь.

Приложение:

Консультировал: Олекса aka SoW
Дата отправки: 04.11.2006, 06:42
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Monah:

Здравствуйте, Вилков Николай Юрьевич/Twister!
В модуле math.pas esti функция power работающая с типом extended с разрядностью до 10^4950.

Консультировал: Monah
Дата отправки: 04.11.2006, 18:34
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное