![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
PascalC |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 19.10.2008 Репутация: нет Всего: нет |
Есть такой код: генерирует набор подмножеств в виде {A1, ..., Am}, где m от 1 до n
не совсем понятно, что обозначает запись вида 1<<n и k >>= 1 и еще k&0x1 это я так понял побитовое сложение с единицей? объясните пожалуйста, как работает данный код |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
||||
|
||||
PascalC |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 19.10.2008 Репутация: нет Всего: нет |
спасибо
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
k&0x1 - это побитовое "И", т.е. в данном случае выделение из k младшего разряда, фактически это получится флаг нечетности.
|
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
точно, а другими словами - умножает на два n раз. например ( 1 << 5 ) == 32 а смещение вправо - делит на 2 например ( 20 >> 2 ) == 5 |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
azesmcar, на троичной машине он будет умножать на 3^n а не на 2^n
поэтому эта операция называется сдвиг а не умножение\деление и не "на 1 бит" а "на 1 разряд" =\ |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
GoldFinch, вы видели троичные машины? звучит как научная фантастика
![]()
а где я говорил что эта операция называется деление? Добавлено через 6 минут и 3 секунды а вообще - это так..если уж играем в слова Бит (англ. binary digit)
http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82 и троичные машины по моему звучит странно. Это сообщение отредактировал(а) azesmcar - 26.3.2009, 10:30 |
||||
|
|||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
Главное, чтобы поняли правильно. На самом деле сплошь и рядом кто как называет. Например тут - побитовый сдвиг назвали Тут - тоже Здесь применили смешанное название Здесь опять побитовый сдвиг Многие то так то так говорят, а как говорит стандарт - в прикрепленном файле (не дает акробат копировать) Присоединённый файл ( Кол-во скачиваний: 11 ) ![]() |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
mes, ну логичнее всего что на троичной платформе операция поразрядного сдвига будет сдвигать на троичные разряды, а не умножать\делить на 2
прям скажем не очень-то авторитетные источники а вот это лол) |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
тут говорится что операция смещение вправо называется делением или говорится что смещение вправо делит на два? думайте... |
|||
|
||||
Albor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 2 Всего: 9 |
GoldFish, для общего развития, в чём разница при двоичном представлении числа (ведь именно в таком виде число хранится в памяти)? Честно сказать, я не помню различий между этими терминами, правда курс ЦЭВМ изучался мною довольно давно, может с тех пор что-то изменилось. |
|||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
а что тут именно вам показалось смешным? Добавлено @ 11:31
приведите авторитетные. А стандарт С++ для вас недостаточно авторитетен? Это сообщение отредактировал(а) azesmcar - 26.3.2009, 11:38 |
||||
|
|||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
в советской\российской терминологии (и на пост-советском пространстве наверное тоже) бит и двоичный разряд это разные понятия
двоичный разряд, десятичный разряд, разряд в позиционной системе счисления с целым основанием n - это величина которая может принимать n различных значений, и имеет некоторый вес зависящий от позиции разряда в числе бит - это единица измерения количества информации иногда битом называют двоичный разряд (по аналогии с зарубежным Binary digIT), и наверное в ряде случаев это допустимо, но правильнее называть двоичный разряд двоичным разрядом пример различия этих терминов - "в переменой типа bool 32 (двоичных) разряда" "в переменой типа bool 1 бит (информации)" Добавлено через 2 минуты и 16 секунд мы же пишем "бит" а не "bit", русского перевода стандарта С++ вроде бы нет |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
неа.. не логично, потому что операция - двоичный сдвиг ( сдвиг двоичного разряда ) первое правильнее, именно на один бит, а не на некий абстрактный разряд. Это сообщение отредактировал(а) mes - 26.3.2009, 13:01 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |