Вопрос по работе And, Or и Xor

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Re: Вопрос по работе And, Or и Xor

Сообщение SII » 21.09.2008 02:36:11

Для удобства. Шестнадцатеричная запись немного короче ;) Фактически двоичная нужна разве что для иллюстрации того, как выполняются операции, а работать удобнее с шестнадцатеричными.
SII
новенький
 
Сообщения: 64
Зарегистрирован: 24.06.2007 17:15:09
Откуда: Зеленоград

Re: Вопрос по работе And, Or и Xor

Сообщение Vadim » 21.09.2008 06:52:20

fs444 писал(а):А зачем ты их до этого в шестнадцатиричную переводил?

Исключительно для компактного отображения. :)
---------------------------------------------------------------
Если Вы работаете в Windows, то у Вас там есть калькулятор. Переведите его в инженерный вид, переключайте его то в двоичное то в десятичное исчисление и попрактикуйтесь в операциях AND, OR, XOR - всё будет очень наглядно видно.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Вопрос по работе And, Or и Xor

Сообщение fs444 » 23.09.2008 22:21:40

Если Вы работаете в Windows, то у Вас там есть калькулятор. Переведите его в инженерный вид, переключайте его то в двоичное то в десятичное исчисление и попрактикуйтесь в операциях AND, OR, XOR - всё будет очень наглядно видно.

Спасибо за совет :) Я так и делаю

Добавлено спустя 16 минут 20 секунд:
У меня есть книжка "Основы программирования". Вот там написано "Убедитесь, что -256 And 256=0, -256 Or 256=-1, -256 Xor 256=-1". А у меня получается -256 And 256=256, -256 Or 256=-256, -256 Xor 256=-512. Почему в книжке так написано?
fs444
новенький
 
Сообщения: 38
Зарегистрирован: 09.09.2008 23:55:30

Re: Вопрос по работе And, Or и Xor

Сообщение LAutour » 24.09.2008 09:45:01

Либо в той книжке отрицательные числа даны в ОК, а не ДК,
либо там не знаки минуса, а знаки отрицания (NOT)
LAutour
новенький
 
Сообщения: 34
Зарегистрирован: 13.06.2006 10:30:34

Re: Вопрос по работе And, Or и Xor

Сообщение fs444 » 24.09.2008 23:04:49

Вот что написано в этой книжке:
op.JPG
У вас нет необходимых прав для просмотра вложений в этом сообщении.
fs444
новенький
 
Сообщения: 38
Зарегистрирован: 09.09.2008 23:55:30

Re: Вопрос по работе And, Or и Xor

Сообщение SII » 25.09.2008 12:36:39

А текст программы из книжки можно?
SII
новенький
 
Сообщения: 64
Зарегистрирован: 24.06.2007 17:15:09
Откуда: Зеленоград

Re: Вопрос по работе And, Or и Xor

Сообщение fs444 » 25.09.2008 22:33:08

Либо в той книжке отрицательные числа даны в ОК, а не ДК,
либо там не знаки минуса, а знаки отрицания (NOT)

Что означает ОК и ДК? Что делают знаки отрицания (NOT)?
Мне на другом форуме (http://forum.sources.ru/index.php?showtopic=249736&st=0) подсказали, что возможно в книжке опечатка, и ее автор просит сравнить не -256 и 256, а -256 и 255. Если сравнивать именно -256 и 255, то получаются ожидаемые 0, -1 и -1.

SII
Вот текст программы:
and_or_xor.JPG
У вас нет необходимых прав для просмотра вложений в этом сообщении.
fs444
новенький
 
Сообщения: 38
Зарегистрирован: 09.09.2008 23:55:30

Re: Вопрос по работе And, Or и Xor

Сообщение LAutour » 26.09.2008 06:21:10

Not - операция инверсии всех битов в числе: not(10001111) = 01110000
Обратный код (ОК) - способ получения отрицательных чисел инверсией битов соответствующего положительного числа.
Дополнительный код (ДК) - способ получения отрицательных чисел как ОК соотвествующего положительного числа + 1.
Наглядно ДК выглядит как инверсия слева-направо всех битов положительного числа до последней значащего бита: ДК(010111000) = 101001000.
LAutour
новенький
 
Сообщения: 34
Зарегистрирован: 13.06.2006 10:30:34

Re: Вопрос по работе And, Or и Xor

Сообщение SII » 26.09.2008 14:22:26

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

Обратный код в настоящее время для представления отрицательных чисел не используется (во всяком случае, в сколько-нибудь известных процессорах). Ну а дополнительный используется повсеместно, в т.ч. в архитектуре IA-32, на которой основаны все нынешние персоналки. Так что понимать его, уметь преобразовывать туда-сюда-обратно попросту обязательно :)

Дополнительный код можно сравнить со счётчиком, например, километров на спидометре, пущенным в обратную сторону: после 0 будет 99999, потом -- 99998, 99997 и так далее. Точно так же и с отрицательными двоичными числами. Например, для чисел размером байт это выглядит так:

Код: Выделить всё
   0 = 0000 0000
  -1 = 1111 1111
  -2 = 1111 1110
  -3 = 1111 1101
   .....
-127 = 1000 0001
-128 = 1000 0000
SII
новенький
 
Сообщения: 64
Зарегистрирован: 24.06.2007 17:15:09
Откуда: Зеленоград

Re: Вопрос по работе And, Or и Xor

Сообщение fs444 » 26.09.2008 22:51:22

Нда, текст проги не оставляет сомнений, что имеет место либо глупейшая ошибка авторов, либо опечатка -- что куда вероятнее.

Это ты про -256 и 255?
fs444
новенький
 
Сообщения: 38
Зарегистрирован: 09.09.2008 23:55:30

Re: Вопрос по работе And, Or и Xor

Сообщение SII » 27.09.2008 19:27:01

Угу.
SII
новенький
 
Сообщения: 64
Зарегистрирован: 24.06.2007 17:15:09
Откуда: Зеленоград

Пред.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru