Страница 1 из 8

Объясните новичку.

СообщениеДобавлено: 17.03.2011 13:23:50
Paster Fob
Изучаю турбопаскаль самостоятельно.По книгам и видео урокам.Возникают недопонимания с разными понятиями.Не могу понять что такое унарная и бинарная операции.Объясните простыми словами.

Re: Объясните новичку.

СообщениеДобавлено: 17.03.2011 13:30:12
Mr.Smart
Унарная операция — это операция над одним операндом (побитовое отрицание, унарный минус — меняет знак числа). Соответственно бинарная - операция над двумя операндами, например: умножение, сложение и т.д.
x+y - бинарная
-x - унарная

Re: Объясните новичку.

СообщениеДобавлено: 17.03.2011 13:47:19
Paster Fob
Всё становится ясно,если объясняют по человечески а не так как в книге заумными словами.Спасибо.если у меня ещё возникнут вопросы с терминами,то я буду писать в этой теме.

Re: Объясните новичку.

СообщениеДобавлено: 17.03.2011 14:04:59
informat
Paster Fob писал(а):Всё становится ясно,если объясняют по человечески а не так как в книге заумными словами.Спасибо.если у меня ещё возникнут вопросы с терминами,то я буду писать в этой теме.


А сколько ешё всего осталось за пределами внимания и понимания.
Когда ученик задаёт вопрос - это значит он уже что-то понял.
А если не понял, то и вопросов не возникает. И это проблема самостоятельного обучения.
Ещё полезный прием в обучении - дать ошибиться, а потом пояснить почему получилась эта ошибка. Этот хороший прием мало кто применяет. :(

Поэтому я и сделал свой курс "Развитие алгоритмического мышления".

Re: Объясните новичку.

СообщениеДобавлено: 17.03.2011 14:15:34
Paster Fob
А что означает унарная операция not,и как она применяется?

Re: Объясните новичку.

СообщениеДобавлено: 17.03.2011 14:21:38
Mr.Smart
not - отрицание, инверсия т.е. инвертируются все биты. Например:
Код: Выделить всё
var
  i: Word;
begin
  i:=0;
  WriteLn(not i);
end;

Выдаст значение $FFFF;

Re: Объясните новичку.

СообщениеДобавлено: 17.03.2011 16:22:54
Paster Fob
Я попробовал сделать так.
Код: Выделить всё
uses crt;
var
  i:integer;
begin
  clrscr;
  i:=5;
  writeln(not i);
  readln;
end.

результат -6.почему добавилась ещё одна единица?

Re: Объясните новичку.

СообщениеДобавлено: 17.03.2011 16:36:52
Kitayets
Paster Fob писал(а):Я попробовал сделать так.
Код: Выделить всё
uses crt;
var
  i:integer;
begin
  clrscr;
  i:=5;
  writeln(not i);
  readln;
end.

результат -6.почему добавилась ещё одна единица?


Для того чтобы понять, что происходит - надо понимать:
1. формат представления целых чисел в двоичной системе;
2. формат представления знаковых целых чисел в двоичной системе.

смотри - твоё число 5 (целое знаковое) -> [0000000000000000000000000000]101
после отрицания - > 11111111111111111111111111111010 = -6

Добавлено спустя 7 минут 6 секунд:
ты можешь спросить - "почему второе число равняется минус 6-ти?". ответ = потому что так принято представлять в отрицательные числа в двоичной системе для удобства реализации дискретных вычислительных устройств.

Добавлено спустя 7 минут 12 секунд:
если тебе интересно почему именно так - скачай в интернете книгу Чарльза Петцольда КОД http://www.computerra.ru/offline/2001/410/12378/ (английское название CODE) там это "на пальцах" объясняется с картинками. Вроде её микрософт бесплатно раздаёт? В любом случае она ищется в сети "за пять минут".

Добавлено спустя 8 минут 22 секунды:
если ты объявишь i как unsigned integer = то после отрицание число будет ровняться 4294967290

Re: Объясните новичку.

СообщениеДобавлено: 17.03.2011 18:09:31
Paster Fob
Спасибо за информацию.

Re: Объясните новичку.

СообщениеДобавлено: 18.03.2011 07:28:38
informat
Есть ещё один вопрос на понимание.

Почему в логических выражениях типа
A=B and D=C
нужно ставить круглые скобки.
Т.е писать так:
(A=B) and (D=C)
?

Автор вопросов задумывался?
Понимает почему?

Re: Объясните новичку.

СообщениеДобавлено: 22.03.2011 09:14:16
Paster Fob
informat писал(а):Почему в логических выражениях типа
A=B and D=C
нужно ставить круглые скобки.
Т.е писать так:
(A=B) and (D=C)
?

Потому что то что в скобках делается в первую очередь.если не поставить скобки получится что-то типа этого A=(B and D)=C.т.к логическая операция and имеет преимущество перед операцией отношения =.

Re: Объясните новичку.

СообщениеДобавлено: 22.03.2011 18:24:16
informat
Paster Fob писал(а):
informat писал(а):Почему в логических выражениях типа
A=B and D=C
нужно ставить круглые скобки.
Т.е писать так:
(A=B) and (D=C)
?

Потому что то что в скобках делается в первую очередь.если не поставить скобки получится что-то типа этого A=(B and D)=C.т.к логическая операция and имеет преимущество перед операцией отношения =.


Значит задумывался.
Это хорошо!

Re: Объясните новичку.

СообщениеДобавлено: 22.03.2011 22:49:40
Paster Fob
Значит следующая проблема ни как не могу понять когда ставить : ,:= и =.может что подскажите.

Re: Объясните новичку.

СообщениеДобавлено: 22.03.2011 22:56:50
Mr.Smart
В чём проблема.
:= - оператор присваивания
например:
Код: Выделить всё
a:=132;

= - оператор сравнения
Код: Выделить всё
if a=123 then

Re: Объясните новичку.

СообщениеДобавлено: 22.03.2011 23:02:13
devels
На счет скобок и and, or и т.п., не во всех языках приоритет операций у них больше чем у других, в таких языках можно скобки опускать.