Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 13

Что это может значить???

16.12.2010, 23:25. Показов 1420. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Изучая одну программу наткнулся на:

if (!(dir[x][y] >> 1 & 1))

кого-нибудь знаетчто это такое?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.12.2010, 23:25
Ответы с готовыми решениями:

ошибка Id returned 1 exit status что может значить?
при компиляции программы выдается такая ошибка undefined reference to "WinMain@16" Id returned 1 exit status без указания...

Кто-нибудь может подробно объяснить, что такое allocators, зачем это и что с ними делать? Нигде не нашёл инфы
Заранее спасибо.

подчеркивает запятую после 50, что это может быть?
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <conio.h> #include "graphics.h" void main(void) { int...

19
 Аватар для besstiaa
94 / 94 / 14
Регистрация: 04.06.2010
Сообщений: 223
16.12.2010, 23:32
Побитовые операции. Сдвиг вправо, побитовое И.
0
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 13
16.12.2010, 23:34  [ТС]
т.е. сдвиг вправо на 1 в массиве dir[x][y]?
0
 Аватар для besstiaa
94 / 94 / 14
Регистрация: 04.06.2010
Сообщений: 223
16.12.2010, 23:37
SergeyM,нет сдвиг на 1 бит вправо числа dir[x][y];
Например, dir[x][y] = 2; В двоичном коде это будет 0...010, после сдвига получится 0...001, т.е. число 1;
1
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 13
16.12.2010, 23:39  [ТС]
аааа понятно
а ! - это просто часть синтаксиса?
0
 Аватар для besstiaa
94 / 94 / 14
Регистрация: 04.06.2010
Сообщений: 223
16.12.2010, 23:41
логическое отрицание
0
7 / 7 / 1
Регистрация: 16.12.2010
Сообщений: 23
16.12.2010, 23:43
Кстати, вопрос, что собственно проверяет условие в первом посте? Кратно ли число 4-м?
0
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 13
16.12.2010, 23:47  [ТС]
значит f (!(dir[x][y] >> 1 & 1)) означает, что
если сдвиг на 1 бит вправо числа dir[x][y] не равно 1 то ... ???
0
7 / 7 / 1
Регистрация: 16.12.2010
Сообщений: 23
16.12.2010, 23:49
SergeyM, нет, & это побитовое "И". Пример: 5&3 = 101 & 011 = 001 = 1;
Соответственно полученное в итоге (после >> и &) число будет сравниваться с нулем (свойство !(num), не знаю как объяснить)
1
0 / 0 / 0
Регистрация: 13.12.2010
Сообщений: 13
16.12.2010, 23:50  [ТС]
ну ладно примерно понял)
спасибо
0
 Аватар для besstiaa
94 / 94 / 14
Регистрация: 04.06.2010
Сообщений: 223
16.12.2010, 23:54
SergeyM, проверяется будет ли после сдвига на 1 бит последний бит 0. В целом тут проверяется на четность/нечетность dir[x][y]
0
7 / 7 / 1
Регистрация: 16.12.2010
Сообщений: 23
16.12.2010, 23:56
besstiaa, чет/нечет это же без сдвига вроде. А со сдвигом что-то для меня, увы, непонятное.
1
 Аватар для besstiaa
94 / 94 / 14
Регистрация: 04.06.2010
Сообщений: 223
17.12.2010, 00:01
Да точно. Ну сдвиг вправо - это вроде как деление на 2 в степени n, где n - число бит сдвига. В данном случае получается, что проверяется на четность/нечетность результат деления dir[x][y]/2
1
 Аватар для Aye Aye
373 / 287 / 97
Регистрация: 17.12.2009
Сообщений: 567
17.12.2010, 02:24
сдвиг влево/вправо эквивалентен умножению/делению на основание системы счисления, в ЭВМ система счисления двоичная, стало быть сдвиг влево/вправо это умножение/деление на 2.
Тут число делится на два и проверяется остаток - есть 1 то число не четное, 0 - четное.
Просто приоритеты операторов в такой записи:
if (!(dir[x][y] >> 1 & 1));
вот такие:
if (not((dir[x][y] >> 1) & 1));.

P. S. Чета я проглядел, что такой ответ уже дали извиняюсь.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
17.12.2010, 03:58
if срабатывает, если после деления числа из массива на два получилось чётное число
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
17.12.2010, 13:03
Цитата Сообщение от SergeyM Посмотреть сообщение
C++
1
if (!(dir[x][y] >> 1 & 1))
на самом деле здесь таким извращенным способом проверяется условие:
C++
1
if(dir[x][y]^2);
человеку зачем то первый бит понадобился.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
17.12.2010, 14:14
Цитата Сообщение от Kastaneda Посмотреть сообщение
на самом деле здесь таким извращенным способом проверяется условие:
C
1
if(dir[x][y]^2);
нет, правильно accept сказал. Независимо от того, был ли младший бит установлен, или нет, после целочисленного деления на два от него ничего не останется. А вот частное от деления как-раз так на чётность и проверяется...
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
17.12.2010, 16:44

Не по теме:

Цитата Сообщение от easybudda Посмотреть сообщение
А вот частное от деления как-раз так на чётность и проверяется...
Это как вариант, но нельзя не согласиться, что (!(dir[x][y] >> 1 & 1)) и (dir[x][y]^2) проверяют одно и то же условие, а именно - является ли первый бит нулем, только предложенная мною запись - это одна операция а у ТС три операции.



Добавлено через 15 минут
сорри, я тупанул, вместо (dir[x][y]^2) правильно будет (!(dir[x][y]&2))
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
17.12.2010, 16:52
Kastaneda, фигасе ты тупишь, не ожидал от тебя О_o
0
17.12.2010, 16:57

Не по теме:

Цитата Сообщение от slice Посмотреть сообщение
Kastaneda, фигасе ты тупишь, не ожидал от тебя
да, что-то заклинило, что нужно 1ый бит отловить, в голову пришло (dir[x][y]^2), нужный бит конечно проверятся, только помимо этого остальные биты тоже ксорятся, а про это я как-то не подумал)))

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.12.2010, 16:57
Помогаю со студенческими работами здесь

Что это за знак >> прочитал что это сдвиг вправо? что он делает
int d=6, c=5,f; f = d >> c; cout<< f; вывод 0

Зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может больше 4 байт весить?
Вот еще один вопрос зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может...

Что бы это могло значить?
При компиляции выдает следующее: Project Name.exe raised exception class EInvalidOperation with message 'Control''has no parent...

Что бы это могло значить?
Недавно решил на свой сайт поставить рекламу Гугла, адсенс. Насколько я понимаю, адсенс начинает показывать рекламу после того, как...

График в Delphi, что это значить?
Я хочу чтобы количество значений какие я выбрал в ListBox нарисовали мне такое самое количество точек на графике.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru