Объясните новичку.
Модератор: Модераторы
- Paster Fob
- постоялец
- Сообщения: 188
- Зарегистрирован: 22.02.2011 20:53:36
- Откуда: Новосибирск.
Объясните новичку.
Изучаю турбопаскаль самостоятельно.По книгам и видео урокам.Возникают недопонимания с разными понятиями.Не могу понять что такое унарная и бинарная операции.Объясните простыми словами.
Унарная операция — это операция над одним операндом (побитовое отрицание, унарный минус — меняет знак числа). Соответственно бинарная - операция над двумя операндами, например: умножение, сложение и т.д.
x+y - бинарная
-x - унарная
x+y - бинарная
-x - унарная
- Paster Fob
- постоялец
- Сообщения: 188
- Зарегистрирован: 22.02.2011 20:53:36
- Откуда: Новосибирск.
Всё становится ясно,если объясняют по человечески а не так как в книге заумными словами.Спасибо.если у меня ещё возникнут вопросы с терминами,то я буду писать в этой теме.
- informat
- новенький
- Сообщения: 62
- Зарегистрирован: 27.10.2010 09:44:20
- Откуда: http://informat.name
- Контактная информация:
Paster Fob писал(а):Всё становится ясно,если объясняют по человечески а не так как в книге заумными словами.Спасибо.если у меня ещё возникнут вопросы с терминами,то я буду писать в этой теме.
А сколько ешё всего осталось за пределами внимания и понимания.
Когда ученик задаёт вопрос - это значит он уже что-то понял.
А если не понял, то и вопросов не возникает. И это проблема самостоятельного обучения.
Ещё полезный прием в обучении - дать ошибиться, а потом пояснить почему получилась эта ошибка. Этот хороший прием мало кто применяет.
Поэтому я и сделал свой курс "Развитие алгоритмического мышления".
- Paster Fob
- постоялец
- Сообщения: 188
- Зарегистрирован: 22.02.2011 20:53:36
- Откуда: Новосибирск.
А что означает унарная операция not,и как она применяется?
not - отрицание, инверсия т.е. инвертируются все биты. Например:
Выдаст значение $FFFF;
Код: Выделить всё
var
i: Word;
begin
i:=0;
WriteLn(not i);
end;Выдаст значение $FFFF;
- Paster Fob
- постоялец
- Сообщения: 188
- Зарегистрирован: 22.02.2011 20:53:36
- Откуда: Новосибирск.
Я попробовал сделать так.
результат -6.почему добавилась ещё одна единица?
Код: Выделить всё
uses crt;
var
i:integer;
begin
clrscr;
i:=5;
writeln(not i);
readln;
end.результат -6.почему добавилась ещё одна единица?
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
- Paster Fob
- постоялец
- Сообщения: 188
- Зарегистрирован: 22.02.2011 20:53:36
- Откуда: Новосибирск.
Спасибо за информацию.
- informat
- новенький
- Сообщения: 62
- Зарегистрирован: 27.10.2010 09:44:20
- Откуда: http://informat.name
- Контактная информация:
Есть ещё один вопрос на понимание.
Почему в логических выражениях типа
A=B and D=C
нужно ставить круглые скобки.
Т.е писать так:
(A=B) and (D=C)
?
Автор вопросов задумывался?
Понимает почему?
Почему в логических выражениях типа
A=B and D=C
нужно ставить круглые скобки.
Т.е писать так:
(A=B) and (D=C)
?
Автор вопросов задумывался?
Понимает почему?
- Paster Fob
- постоялец
- Сообщения: 188
- Зарегистрирован: 22.02.2011 20:53:36
- Откуда: Новосибирск.
informat писал(а):Почему в логических выражениях типа
A=B and D=C
нужно ставить круглые скобки.
Т.е писать так:
(A=B) and (D=C)
?
Потому что то что в скобках делается в первую очередь.если не поставить скобки получится что-то типа этого A=(B and D)=C.т.к логическая операция and имеет преимущество перед операцией отношения =.
- informat
- новенький
- Сообщения: 62
- Зарегистрирован: 27.10.2010 09:44:20
- Откуда: http://informat.name
- Контактная информация:
Paster Fob писал(а):informat писал(а):Почему в логических выражениях типа
A=B and D=C
нужно ставить круглые скобки.
Т.е писать так:
(A=B) and (D=C)
?
Потому что то что в скобках делается в первую очередь.если не поставить скобки получится что-то типа этого A=(B and D)=C.т.к логическая операция and имеет преимущество перед операцией отношения =.
Значит задумывался.
Это хорошо!
- Paster Fob
- постоялец
- Сообщения: 188
- Зарегистрирован: 22.02.2011 20:53:36
- Откуда: Новосибирск.
Значит следующая проблема ни как не могу понять когда ставить : ,:= и =.может что подскажите.
В чём проблема.
:= - оператор присваивания
например:
= - оператор сравнения
:= - оператор присваивания
например:
Код: Выделить всё
a:=132;= - оператор сравнения
Код: Выделить всё
if a=123 thenНа счет скобок и and, or и т.п., не во всех языках приоритет операций у них больше чем у других, в таких языках можно скобки опускать.
