Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
#1

Обьясните понятие как работает Операция языка - C++

21.07.2013, 14:53. Просмотров 1835. Ответов 62
Метки нет (Все метки)

Простите пожалуста, если я не видел аналогичной темы.

Вот

Операции сдвига ( « и » ) применяются к целочисленным операндам. Они
сдвигают двоичное представление первого операнда влево или вправо на количество
двоичных разрядов, заданное вторым операндом. При сдвиге влево ( « ) освободившиеся
разряды обнуляются. При сдвиге вправо (>) освободившиеся биты
заполняются нулями, если первый операнд беззнакового типа, и знаковым разрядом
в противном случае. Операции сдвига не учитывают переполнение и потерю
значимости.

Как-то не ложится в мозг. Тупо читал минут 15, неи очень что-то понял.. Можно пожалуста на примерах?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.07.2013, 14:53     Обьясните понятие как работает Операция языка
Посмотрите здесь:
Обьясните, как работает цикл C++
C++ Обьясните как работает рекурсия
обьясните пожалуйта как работает программа C++
метод гауса..обьясните как работает программа C++
Обьясните как работает рекурсия в данной задаче C++
Функция C++ в php или обьясните по подробнее как она работает C++
Нюансы синтаксиса: объяснить как работает тернарная операция в заданном фрагменте кода C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
21.07.2013, 15:53     Обьясните понятие как работает Операция языка #21
Цитата Сообщение от Thinker Посмотреть сообщение
появятся 126-битные системы
Ну это врядли, 128-битные, а 126 не входит в последовательность степеней двойки, только если использовать не 2-ю систему.
Цитата Сообщение от lazybiz Посмотреть сообщение
Дополнительный код (http://wiki.mvtom.ru/index.php/%D0%A...BA.D0.BE.D0.B4)
Отрицательные числа хранятся не так как ты думаешь.
Оттуда взята цитата:
Представление числа в привычной форме "знак"-"величина", при которой старший разряд ячейки отводится под знак, а остальные - под запись числа в двоичной системе, называется прямым кодом двоичного числа. Например, прямой код двоичных чисел 1001 и -1001 для 8-разрядной ячейки равен 00001001 и 10001001 соответственно.(с)

Теперь объясните разницу с тем, что писал я? Мы сейчас рассматриваем прямой код? И где я не прав? Я извинюсь, если что ;-)
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 15:55     Обьясните понятие как работает Операция языка #22
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Оттуда взята цитата:
Не прямой, а дополнительный!
В ссылке якорь не на том месте.
Thinker
Эксперт C++
4224 / 2198 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
21.07.2013, 15:56     Обьясните понятие как работает Операция языка #23
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Ну это врядли, 128-битные, а 126 не входит в последовательность степеней двойки, только если использовать не 2-ю систему.
не так записал, естественно, речь о 128

Цитата Сообщение от Retyrn0 Посмотреть сообщение
Оттуда взята цитата:
я не экстрасенс откуда вы берете фразы, но поподробнее почитайте о сдвигах, особенно, чисел со знаком
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
21.07.2013, 15:58     Обьясните понятие как работает Операция языка #24
Цитата Сообщение от Thinker Посмотреть сообщение
видите. поучая ТС, сами чему-то научитесь.
Я сейчас не понял?) Я не правильно посчитал?)

Добавлено через 44 секунды
Цитата Сообщение от lazybiz Посмотреть сообщение
Не прямой, а дополнительный!
А какое отношение имеет дополнительный код к операциям сдига?
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 15:59     Обьясните понятие как работает Операция языка #25
Цитата Сообщение от Retyrn0 Посмотреть сообщение
А какое отношение имеет дополнительный код к операциям сдига?
Цитата Сообщение от lazybiz Посмотреть сообщение
Отрицательные числа хранятся не так как ты думаешь.
Ты прям деревянный какой-то.. Тебе же сказали что отрицательные числа в ПК хранятся в Дополнительном коде!
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
21.07.2013, 16:01     Обьясните понятие как работает Операция языка #26
C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
#include <windows.h>
 
void main()
{
    signed int x=-4;//это ваше 1100
    x=x>>2;
    printf("%d\n",x);//результат вывода -1, что соответствует 1001
}
Цитата Сообщение от Thinker Посмотреть сообщение
поподробнее почитайте о сдвигах, особенно, чисел со знаком
Я с удовольствием последую Вашему совету, если Вы объясните где я не прав-то?
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 16:02     Обьясните понятие как работает Операция языка #27
Тут ты не прав:
Цитата Сообщение от Retyrn0 Посмотреть сообщение
-2 в 2-й системе = 1010 - разница только в крайнем левом бите.
Следуй моему совету.
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
21.07.2013, 16:03     Обьясните понятие как работает Операция языка #28
Цитата Сообщение от lazybiz Посмотреть сообщение
отрицательные числа в ПК хранятся в Дополнительном коде
Операцию сдвига можно рассматривать, как чёрный ящик, особенно начинающему С++.
Мы будем пугать просящего помощи сложными для него понятиями типа обратного кода или ответим на вопрос что есть побитовый сдвиг?
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 16:04     Обьясните понятие как работает Операция языка #29
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Мы будем пугать просящего помощи сложными для него понятиями типа обратного кода
А я не ему об этом говорил, я тебя поправлял, т.к. ты вводил участников форума в заблуждение, особенно тех кто в этом мало разбирается.
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
21.07.2013, 16:07     Обьясните понятие как работает Операция языка #30
Цитата Сообщение от lazybiz Посмотреть сообщение
Следуй моему совету
Человек попросил помощи. Я ему дал понять что происходит при побитовом сдвиге на примере прямого кода, для наилучшего понимания. ТС новичёк? Ему сходу нужно знать чудеса обратного кода? Думаю для понимания я всё написал верно, а то как инженеры воплотили компьютерную математику ТС знать пока не обязательно.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 16:09     Обьясните понятие как работает Операция языка #31
Ты не прав. Ты зачем то начал объяснять как выглядит отрицательное число в двоичном представлении, и объяснять не правильно. Оно так не выглядит. Если бы я этого не знал то непременно бы запутался от твоих слов.
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
21.07.2013, 16:15     Обьясните понятие как работает Операция языка #32
Цитата Сообщение от lazybiz Посмотреть сообщение
ты вводил участников форума в заблуждение
Окай, я прошу участников форума простить меня за то, что я не уточнил, что прямой код - это беспантово и его ни в коем случае нельзя использовать в своей голове и рассуждениях...
Тем не менее ТС понял смысл сдвига и получил ответ адекватный его знаниям.

Добавлено через 3 минуты
Цитата Сообщение от lazybiz Посмотреть сообщение
Ты зачем то начал объяснять как выглядит отрицательное число в двоичном представлении, и объяснять не правильно.
Я всё объяснил правильно!!! Ещё раз повторяю:
то что алгоритмически удобнее использовать в архитектуре компьютера ещё не значит, что нельзя иначе.
Т.е. Вы хотите сказать, что прямой код не реализуем в принципе? Обратный используется потому что с ним удобнее работать. Фразу "В компьюетере используется только прямой код" я не писал вроде.

Добавлено через 1 минуту
Цитата Сообщение от lazybiz Посмотреть сообщение
отрицательное число в двоичном представлении
Отрицательное число в двоичном представлении выглядит именно так! Непосредственно в ЭВМ - соглашусь, я не прав буду, если скажу так, а в самом представлении я не ошибся.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 16:15     Обьясните понятие как работает Операция языка #33
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Вы хотите сказать, что прямой код не реализуем в принципе?
Я говорю что в современных ПК используется Дополнительный код. Твоё объяснение не несет никакой практической пользы.
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
21.07.2013, 16:22     Обьясните понятие как работает Операция языка #34
Цитата Сообщение от lazybiz Посмотреть сообщение
Твоё объяснение не несет никакой практической пользы.
Почитайте основы. Теорию двоичной системы. Я всё правильно написал и ТС всё правильно понял. Форум не посвящён компьютерному железу. То что дополнительный код удобно использовать ещё не значит, что он протеворечит прямому коду. Не несёт пользы говорите? А мне показалось, что ТС написал, будто ему всё стало понятно, хотя Вам же виднее ;-)
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 16:31     Обьясните понятие как работает Операция языка #35
Разумеется он написал что ему все понятно, он же не знал что у него в компьютере отрицательные числа имеют не такое представление.

Не по теме:

Полагаю что ты даже не знаешь где используется прямой код в чистом виде..
Правильно тебе сказали:

Цитата Сообщение от Thinker Посмотреть сообщение
Не по теме:
видите. поучая ТС, сами чему-то научитесь.
хотя еще не факт...

Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
21.07.2013, 16:49     Обьясните понятие как работает Операция языка #36
Цитата Сообщение от lazybiz Посмотреть сообщение
у него в компьютере
Вы прикалываетесь сейчас?) Или тупо поспорить хочется?)
Цитата Сообщение от lazybiz Посмотреть сообщение
он же не знал что у него в компьютере отрицательные числа имеют не такое представление
Ему это и не надо знать, по крайней мере пока что. Я из-за таких дотошных учителей сначала испугался, думал, что программирование - это кошмар, но мне попался хорошо объясняющий на русском языке основы человек, а дальше я сам всё начал учить, опираясь на простые истины. А Вы с ходу убиваете весь энтузиазм у будущего, возможно, невероятно талантливого программиста из-за каких-то мелочных архитектурных особенностей ПК. Он программист, ему не придётся паять микросхемы. Все азы правильно объяснять в прямом коде - так делают в ВУЗах, потом со временем поясняют, мол это всё правильно, но когда-то один умник выдумал обратный код для ускорения вычитания и поэтому архитектура компа иная. И что? Операция сдвига от иного представления числа не меняет своего смысла.

Добавлено через 7 минут
Цитата Сообщение от lazybiz Посмотреть сообщение
сами чему-то научитесь.
хотя еще не факт...
То что мне нужно я уже знаю и мне хватает с головой. То что не знаю выучу когда понадобится. Об обратном коде я знаю много чего и вообще об архитектуре компьютера. Транзисторы, триггеры и прочую ересь, но мне эти знания ещё не пригодились при программировании. Так что предлагаю заканчивать дискуссию о том кто умнее - Вы наверняка очень умный, но тема обсуждения иная и ТС вроде удовлетворился ответом.
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
21.07.2013, 16:53     Обьясните понятие как работает Операция языка #37
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Почитайте основы. Теорию двоичной системы.
хорошо покажи сколько в теории число -2
что есть дополнительный код ?
что есть обратный код ?
и в чем их преимущество?
почему для отрицательных используют дополнительный а не обратный код
есть ли разница для сдвига вправо для знакового и безнакового числа?
а для ТС проше объяснить на 10чном коде
сдвиг влево вправо это деление умножение на 2
если представим что не на 2 а на 10( это не соответствует действительности так для иллюстрации)
число 10 сдвинули вправо значит второй разряд ушел на место первого а первый потерялся
получили 1 все равно что поделили на 10
число 10 сдвинули влево в третий разряд ушел второй во второй ушел первый а в первый записали 0
получили 100 все равно что умножили на 10

теперь вернемся к двоичным
10(2) сдвинуть вправо получили 1(1), все равно что разделили на 2
10(2) сдвинули влево получили 100(4),все равно что умножили на 2

Добавлено через 1 минуту
Цитата Сообщение от Retyrn0 Посмотреть сообщение
то? Операция сдвига от иного представления числа не меняет своего смысла.
серьезно?
арифметический и логический сдвиг это одно и тоже?
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
21.07.2013, 16:54  [ТС]     Обьясните понятие как работает Операция языка #38
Так, в начале отрицателього числа стоит единица. Так? Тогда чем оно отличается от такого же положительного числа? Допустим, 10000001=129 и все тут?

Спасибо за развёрнутую биседу!
Retyrn0
45 / 45 / 3
Регистрация: 24.06.2013
Сообщений: 677
Завершенные тесты: 1
21.07.2013, 17:08     Обьясните понятие как работает Операция языка #39
Цитата Сообщение от ValeryS Посмотреть сообщение
арифметический и логический сдвиг это одно и тоже
Вы что? Нет конечно! Это разные вещи.
Цитата Сообщение от ValeryS Посмотреть сообщение
хорошо покажи сколько в теории число -2
что есть дополнительный код ?
что есть обратный код ?
и в чем их преимущество?
почему для отрицательных используют дополнительный а не обратный код
есть ли разница для сдвига вправо для знакового и безнакового числа?
Товарищ преподаватель, мне уже все возможные экзамены в зачётке выставлены и зачётка благополучно выброшена)

Продолжайте в том же духе. Объясните ещё ТС что-то умное и "важное", чтобы он наверняка плюнул на программирование и пошёл, как нормальные пацанчики, на стройку.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2013, 17:13     Обьясните понятие как работает Операция языка
Еще ссылки по теме:
Обьясните почему не работает C++
Как работает операция взятия адреса "&"? C++
C++ Странно работает тернарная операция
Не работает дружественная операция вывода C++
Не работает операция switch-case C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
21.07.2013, 17:13     Обьясните понятие как работает Операция языка #40
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
ак, в начале отрицателього числа стоит единица. Так?
так, да не так
это в дополнительном коде
для того чтобы перевести число в дополнительный код нужно инвертировать его и добавить 1
например число 1 0000 0001 а -1 1111 1111
преимущество использования дополнительного кода выясняются при сложении положительных и отрицательных чисел
например 1+(-1)= 0000 0001 +1111 1111 =0000 0000
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
Допустим, 10000001=129 и все тут?
а вот здесь уже разночтение
в прямом коде 129 в дополнительном -127
в языке Си для этого есть знаковые и безнаковые переменные (signed \ unsigned)

например
C++
1
2
signed char a=-127;
unsigned char =129;
если выведешь их HEX значения на экран
C++
1
printf(%x %x",a,b);
то получишь одно и тоже значение 0х81
поэтому диапазон значений signed char -128..127
unsigned char 0...255
число 129 ты в signed char не запишешь

Добавлено через 2 минуты
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Вы что? Нет конечно! Это разные вещи.
абсолютно разные или иногда одинаковые?
Цитата Сообщение от Retyrn0 Посмотреть сообщение
мне уже все возможные экзамены в зачётке выставлены и зачётка благополучно выброшена)
т.е я так понимаю отчислен
потому что чтобы получить диплом нужно сдать зачетку и студенческий билет
Yandex
Объявления
21.07.2013, 17:13     Обьясните понятие как работает Операция языка
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru