Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
1

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

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

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

Вот

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

Как-то не ложится в мозг. Тупо читал минут 15, неи очень что-то понял.. Можно пожалуста на примерах?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.07.2013, 14:53
Ответы с готовыми решениями:

Обьясните как работает рекурсия
#include <iostream> using namespace std; int Multiply(int, int); int main() { int number;...

Обьясните, как работает цикл
#include <iostream> #include <string> using namespace std; int main() { int j = 0; string...

обьясните пожалуйта как работает программа
#include <sstream> #include <iostream> int main() { std::stringstream ss; long int u, count...

Обьясните как работает рекурсия в данной задаче
есть вот такая програмка: #include <stdio.h> #include <conio.h> int a,cnt=0,N,K; void...

62
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
21.07.2013, 15:53 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Thinker Посмотреть сообщение
появятся 126-битные системы
Ну это врядли, 128-битные, а 126 не входит в последовательность степеней двойки, только если использовать не 2-ю систему.
Цитата Сообщение от lazybiz Посмотреть сообщение
Дополнительный код (http://wiki.mvtom.ru/index.php... 0.BE.D0.B4)
Отрицательные числа хранятся не так как ты думаешь.
Оттуда взята цитата:
Представление числа в привычной форме "знак"-"величина", при которой старший разряд ячейки отводится под знак, а остальные - под запись числа в двоичной системе, называется прямым кодом двоичного числа. Например, прямой код двоичных чисел 1001 и -1001 для 8-разрядной ячейки равен 00001001 и 10001001 соответственно.(с)

Теперь объясните разницу с тем, что писал я? Мы сейчас рассматриваем прямой код? И где я не прав? Я извинюсь, если что ;-)
1
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
21.07.2013, 15:55 22
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Оттуда взята цитата:
Не прямой, а дополнительный!
В ссылке якорь не на том месте.
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
21.07.2013, 15:56 23
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Ну это врядли, 128-битные, а 126 не входит в последовательность степеней двойки, только если использовать не 2-ю систему.
не так записал, естественно, речь о 128

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

Добавлено через 44 секунды
Цитата Сообщение от lazybiz Посмотреть сообщение
Не прямой, а дополнительный!
А какое отношение имеет дополнительный код к операциям сдига?
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
21.07.2013, 15:59 25
Цитата Сообщение от Retyrn0 Посмотреть сообщение
А какое отношение имеет дополнительный код к операциям сдига?
Цитата Сообщение от lazybiz Посмотреть сообщение
Отрицательные числа хранятся не так как ты думаешь.
Ты прям деревянный какой-то.. Тебе же сказали что отрицательные числа в ПК хранятся в Дополнительном коде!
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
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 Посмотреть сообщение
поподробнее почитайте о сдвигах, особенно, чисел со знаком
Я с удовольствием последую Вашему совету, если Вы объясните где я не прав-то?
1
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
21.07.2013, 16:02 27
Тут ты не прав:
Цитата Сообщение от Retyrn0 Посмотреть сообщение
-2 в 2-й системе = 1010 - разница только в крайнем левом бите.
Следуй моему совету.
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
21.07.2013, 16:03 28
Цитата Сообщение от lazybiz Посмотреть сообщение
отрицательные числа в ПК хранятся в Дополнительном коде
Операцию сдвига можно рассматривать, как чёрный ящик, особенно начинающему С++.
Мы будем пугать просящего помощи сложными для него понятиями типа обратного кода или ответим на вопрос что есть побитовый сдвиг?
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
21.07.2013, 16:04 29
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Мы будем пугать просящего помощи сложными для него понятиями типа обратного кода
А я не ему об этом говорил, я тебя поправлял, т.к. ты вводил участников форума в заблуждение, особенно тех кто в этом мало разбирается.
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
21.07.2013, 16:07 30
Цитата Сообщение от lazybiz Посмотреть сообщение
Следуй моему совету
Человек попросил помощи. Я ему дал понять что происходит при побитовом сдвиге на примере прямого кода, для наилучшего понимания. ТС новичёк? Ему сходу нужно знать чудеса обратного кода? Думаю для понимания я всё написал верно, а то как инженеры воплотили компьютерную математику ТС знать пока не обязательно.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
21.07.2013, 16:09 31
Ты не прав. Ты зачем то начал объяснять как выглядит отрицательное число в двоичном представлении, и объяснять не правильно. Оно так не выглядит. Если бы я этого не знал то непременно бы запутался от твоих слов.
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
21.07.2013, 16:15 32
Цитата Сообщение от lazybiz Посмотреть сообщение
ты вводил участников форума в заблуждение
Окай, я прошу участников форума простить меня за то, что я не уточнил, что прямой код - это беспантово и его ни в коем случае нельзя использовать в своей голове и рассуждениях...
Тем не менее ТС понял смысл сдвига и получил ответ адекватный его знаниям.

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

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

Не по теме:

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

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

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

Добавлено через 7 минут
Цитата Сообщение от lazybiz Посмотреть сообщение
сами чему-то научитесь.
хотя еще не факт...
То что мне нужно я уже знаю и мне хватает с головой. То что не знаю выучу когда понадобится. Об обратном коде я знаю много чего и вообще об архитектуре компьютера. Транзисторы, триггеры и прочую ересь, но мне эти знания ещё не пригодились при программировании. Так что предлагаю заканчивать дискуссию о том кто умнее - Вы наверняка очень умный, но тема обсуждения иная и ТС вроде удовлетворился ответом.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,519
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 Посмотреть сообщение
то? Операция сдвига от иного представления числа не меняет своего смысла.
серьезно?
арифметический и логический сдвиг это одно и тоже?
0
15 / 15 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
21.07.2013, 16:54  [ТС] 38
Так, в начале отрицателього числа стоит единица. Так? Тогда чем оно отличается от такого же положительного числа? Допустим, 10000001=129 и все тут?

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

Продолжайте в том же духе. Объясните ещё ТС что-то умное и "важное", чтобы он наверняка плюнул на программирование и пошёл, как нормальные пацанчики, на стройку.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,519
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 Посмотреть сообщение
мне уже все возможные экзамены в зачётке выставлены и зачётка благополучно выброшена)
т.е я так понимаю отчислен
потому что чтобы получить диплом нужно сдать зачетку и студенческий билет
1
21.07.2013, 17:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2013, 17:13
Помогаю со студенческими работами здесь

метод гауса..обьясните как работает программа
ipMatr(); for(opMatr(),k=0;k&lt;=n;k++) //прямой ход метода Гаусса; ...

Функция C++ в php или обьясните по подробнее как она работает
typedef std::basic_ostringstream&lt;Char&gt; OStringStream; std::string ByteArrayToHexStr(uint8 const*...

Не понимаю как работает операция new с размещением в конструкторе переноса
Делаю упражнение 2 из Праты глава 18. Имеется следующий класс: class Cpmv { public: struct...

Обьясните как работает fgets()
&lt;?php ## Извлечение строки со случайным номером. $ourFile = fopen(&quot;index.php&quot;, &quot;r&quot;); // ето...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru