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

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

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

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

Вот

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

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

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

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

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

62
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
21.07.2013, 17:13
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
Так, в начале отрицателього числа стоит единица. Так? Тогда чем оно отличается от такого же положительного числа? Допустим, 10000001=129 и все тут?
Тебе сейчас товарищ Retyrn0 все объяснит...
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
21.07.2013, 17:17
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
Так, в начале отрицателього числа стоит единица. Так? Тогда чем оно отличается от такого же положительного числа?
Тем что в начале положительного числа стоит ноль. Т.е. крайний левый бит несёт в себе информацию о знаке.

Интуитивно понятно должно быть:

- 1001 = 9
1 1001= -9
Т.е. минус меняется на "1", плюс остаётся "0".

Но это прямой код и его используйте исключительно для понимания происходящего, ибо как уточнили товарищи, в реальных условиях используется не прямой код - это потом, а именно для понимания проще объяснять на прямом коде.

Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
т.е я так понимаю отчислен
Лучше бы отчислен ибо диплом мне никак не помог в поиске работы - 5 лет в трубу)
1
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
21.07.2013, 17:17
Цитата Сообщение от Retyrn0 Посмотреть сообщение
1 1001= -9
это в какой же кодировке?
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
21.07.2013, 17:19
Цитата Сообщение от ValeryS Посмотреть сообщение
это в какой же кодировке
в пятибитной
0
16 / 16 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
21.07.2013, 17:20  [ТС]
Спасибо! Понятно.
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
21.07.2013, 17:29
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
Спасибо! Понятно.
Не за что. Когда "пережуёте" прямой код, товарищи правильно сказали, что он не актуален, почитайте про обратный.
Я пояснил на примере прямого кода потому что сам когда-то это учил и зная как всё происходит в прямом, проще было разобраться с обратным, но на самом деле он может Вам даже не пригодиться, ну мне ещё не пригодился)
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
21.07.2013, 17:30
Цитата Сообщение от Retyrn0 Посмотреть сообщение
в пятибитной
ну так сложи мне в своей пятибитной
-9+9=0
11001+01001=?

Добавлено через 1 минуту
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Когда "пережуёте" прямой код, товарищи правильно сказали, что он не актуален,
и кто это заявлял?
1
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
21.07.2013, 17:43
Цитата Сообщение от ValeryS Посмотреть сообщение
сложи мне в своей пятибитной
Цитата Сообщение от ValeryS Посмотреть сообщение
-9
Это вычитание, а не сложение, если что ;-)
Покажите мне строчку в вопросе ТС где фигурирует слово "сложение" или "вычитание"?
Вот там да, одним прямым кодом не обойтись. А Ваш пример-задача - там да, хитрыми манипуляциями вычитание превращается в сложение ;-)
1
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
21.07.2013, 17:55
Dimka-novitsek, тебе со сдвигом то все понятно или еще что объяснить?
1
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
21.07.2013, 17:58
ValeryS, кстати, у меня вопрос не по теме, а данные именно хранятся в обратном коде или переводятся в него во время выполнения операций?
1
16 / 16 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
21.07.2013, 17:59  [ТС]
Понятно!! Спасибо!!!
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
21.07.2013, 18:41
Цитата Сообщение от Retyrn0 Посмотреть сообщение
данные именно хранятся в обратном коде или переводятся в него во время выполнения операций?
данные хранятся так же как и используются
все знакомые мне процессоры хранят положительные в прямом, отрицательные в дополнительном коде
у звуковых процессоров несколько иная картина(про те что я знаю)
отрицательные числа от 0 до 01111111(зависит от разрядности процессора ) 10000000 "0" дальше положительные значения связано это с работой АЦП ЦАП
но может быть и по другому, я просто не в курсе
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
21.07.2013, 19:27
Цитата Сообщение от ValeryS Посмотреть сообщение
отрицательные числа от 0 до 01111111(зависит от разрядности процессора ) 10000000 "0" дальше положительные значения
Спасибо за разъяснения. А при вычитании unsigned чисел, вычитаемое нуждается же в преобразовании вроде?
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
21.07.2013, 20:03
Цитата Сообщение от Retyrn0 Посмотреть сообщение
А при вычитании unsigned чисел, вычитаемое нуждается же в преобразовании вроде?
нет
у ассемблера (сиречь машинного кода ) есть команда для сложения ADD и вычитания SUB
Хотя в самом процессоре может и преобразуется,зависит от инженеров как они реализовали SUB
да и процессор не знает такого знаковый беззнаковый, он знает просто числа
рассмотрим пример
безнаковое сложение
255(FF) +1 (1)=1 00 т.е получился 0 и перенос в старший разряд, которого нет, переполнение разрядной сетки
т.е на языке Си это будет примерно так
(255+1)%256
теперь знаковое
-1(FF)+1(1)=1 00 тоже самое переполнение

теперь вычитание
255(FF)-1(1)=254(FE)
-1(FF)-1(1)=-2(FE)
как видишь никакой разницы в шестнадцатеричных значениях нет
и процессору они не нужны
это уже прерогатива языков высокого уровня ,при программировании на ассемблере программиста,
как интерпретировать числа с установленным старшим разрядом, как знаковое или как беззнаковое
кстати для знаковых возможны колизии которые нужно учитывать
C++
1
2
char a=127;
a++;// а стало -128
переполнение
чтобы этого не было нужно проверять результат
например
C++
1
2
3
4
5
char a=100;
char b= 100;
if(a+b<a)
  return error;
return a+b;
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
21.07.2013, 20:18
Цитата Сообщение от ValeryS Посмотреть сообщение
чтобы этого не было нужно проверять результат
Ну это само собой разумеется. Спасибо!
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
21.07.2013, 20:55
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Я с удовольствием последую Вашему совету, если Вы объясните где я не прав-то?
смотрите. рассмотрим 4-х разрядные числа:

-8 1000
-7 1001
-6 1010
-5 1011
-4 1100
-3 1101
-2 1110
-1 1111

1100 >> 2 по сути это деление на 4.
-4 / 4 = -1 == 1111
стало понятнее?
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
21.07.2013, 21:08
Цитата Сообщение от Thinker Посмотреть сообщение
стало понятнее?
Это было понятно давно. как это относиться к сдвигу прямого кода, который я объяснял ТС?
В вопросе была фраза "как компьютер производит двоичный сдвиг"? Или ему нужно было понять что делают операторы "<<" и ">>"? Я уже много раз проверил своё объяснение на программе - ни одного противоречия не возникло. каждое моё утверждение выполняется на реальном компьютере. На примере прямого кода сдвиг объяснить значительно проще и понятнее ИМХО, что и стало причиной данного спора. В своё время ТС, при необходимости, узнает о массе вещей, которые используются в реальных компьютерах, а сейчас ему это знать не нужно. Я по себе знаю как это, когда "умные дядьки" рассказывают простые вещи сложным языком и мне такой подход крайне не нравился. Сейчас я упростил объяснение. Какие вопросы?
1
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
21.07.2013, 21:10
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Это было понятно давно.
это был комментарий к этому
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Да ладно? Разве?

1100>>2=1001
сообщению.

Не по теме:

отлучался, сразу не мог написать

0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
21.07.2013, 21:19
Цитата Сообщение от Thinker Посмотреть сообщение
это был комментарий к этому
Сообщение от Retyrn0
Да ладно? Разве?
1100>>2=1001
сообщению.
Извиняюсь, я не догадался сразу, что это не прямой код. У меня есть отмазка - я не экстрасенс =)
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
21.07.2013, 21:21
Цитата Сообщение от Retyrn0 Посмотреть сообщение
я не догадался сразу, что это не прямой код.

Не по теме:

ну, тогда все точки над и расставлены.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.07.2013, 21:21

Обьясните как работает рекурсия в данной задаче
есть вот такая програмка: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; int a,cnt=0,N,K; void fun(long S, int tek) { ...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru