о флаге CF (Carry) и OF (Overflow) блока

Цветовая карта будет автоматически установлена ​​на значения ваших данных. Ваши данные находятся в диапазоне [0 2], поэтому они установлены на это. Чтобы сделать то, что вы хотите, вам нужно насытить вашу цветовую карту, это будет означать, что она будет отображаться с белого на черный в [0 1], но это будет просто черный в [1 2]. В общем, это плохая наука, вы вводите читателя в заблуждение относительно реальной стоимости поверхности / изображения.

Однако, если у вас есть подлинная причина сделать это, то команда будет caxis([0 1])

28
задан sth 27 April 2009 в 02:10
поделиться

6 ответов

Различие состоит в том, какие инструкции используются для манипулирования данные, а не сами данные. Современные компьютеры (начиная с 1970 г.) используют представление целочисленных данных, называемое two -plement, в котором сложение и вычитание работают одинаково как для чисел со знаком, так и для чисел без знака.

  • Разница в представлении - это интерпретация, данная старшему значащему биту (также называемому знаковым битом ). Для чисел без знака самый старший бит устанавливается, когда число находится в верхней половине полностью положительного диапазона. Для чисел со знаком устанавливается старший значащий бит, когда число находится в нижней и отрицательной половине всего диапазона.

  • Разные инструкции могут использовать разные интерпретации одного и того же бита. Например, большинство больших машин имеют как умноженные инструкции со знаком, так и без знака. Машины с инструкцией «set less than» могут иметь как подписанные, так и неподписанные варианты.

  • OF (флаг переполнения) сообщает, перебрасывает ли перенос знак старшего значащего бита в результате, чтобы он отличался от самого значимого биты аргументов. Если числа интерпретируются как беззнаковые, флаг переполнения не имеет значения, но если они интерпретируются как подписанные, OF означает, например, были добавлены два больших положительных числа, и результат был отрицательным.

  • CF (флаг переноса) сообщает, был ли бит выполнен из слова целиком (например, в бит 33 или бит 65). Если числа интерпретируются как неподписанные, флаг переноса означает, что сложение переполнено, и результат слишком велик, чтобы поместиться в машинное слово. Флаг переполнения не имеет значения.

Ответ на ваш вопрос заключается в том, что код сборки имеет несколько способов отличить подписанные данные от неподписанных:

  • Он может выбрать либо CF, либо OF для сравнения со знаком или без знака.
  • Может выберите команды умножения и деления со знаком или без знака.
  • Он может выбрать сдвиг вправо со знаком или без знака (копирует старший бит со знаком; сдвиги в ноль без знака).
38
ответ дан 28 November 2019 в 02:45
поделиться

Не пытайтесь закодировать знак. Это невозможно. Вместо этого только попытайтесь осознать истину: никаких признаков. Тогда вы увидите, что это не тип знака, который отличает, а только вы сами.

18
ответ дан 28 November 2019 в 02:45
поделиться

Существуют различные коды операций для работы с подписанными и неподписанными данными. Если программа хочет сравнить два целых числа со знаком, она использует коды операций jl , jle , jg и jge , где l и g обозначают l ess и g reater соответственно. Если программа хочет сравнить два целых числа без знака, она использует коды операций jb , jbe , ja и jae , где a и b обозначают a bove и b elow соответственно. Е означает «или равно» во всех случаях. Эти коды операций используются для ветвления на основе сравнения.

Аналогично, существуют также инструкции setCC , которые устанавливают байты в 0 или 1 в зависимости от сравнения. Эти функции идентичны - есть setl , setle , setg , setge , setb , setbe , seta , setae и др.

Подписанные коды операций проверяют флаги ZF, OF и SF. Операционные коды без знака проверяют флаги ZF, CF и SF. См. Разделы Справочного руководства программиста 80386 в инструкциях JCC и инструкциях setCC для точных условий тестирования.

Операционные коды без знака проверяют флаги ZF, CF и SF. См. Разделы Справочного руководства программиста 80386 в инструкциях JCC и инструкциях setCC для точных условий тестирования.

Операционные коды без знака проверяют флаги ZF, CF и SF. См. Разделы Справочного руководства программиста 80386 в инструкциях JCC и инструкциях setCC для точных условий тестирования.

5
ответ дан 28 November 2019 в 02:45
поделиться

Это не так. Флаги просто устанавливаются всякий раз, когда возникает условие. Предполагается, что программист должен знать, с какими типами int он работает, и из этого знать, какой флаг проверять, не волнует ли его.

4
ответ дан 28 November 2019 в 02:45
поделиться

Невозможно попросить ЦП проверить и вернуть тип байта / слова / длинного.

0xFF может содержать «255» или «-1», все зависит от того, какой тип байта говорит ваша программа.

Такие конструкции, как «type», «signess» и т. Д., Существуют только в языках более высокого уровня, таких как Ява а не на уровне процессора. В конце концов, все зависит от процессора, наши программы должны организовать и знать, как интерпретировать и манипулировать этими значениями ...

Флаги CPU, найденные в статусе, не обеспечивают никакой парадигмы, которая зависит от вашего код для тестирования и реагирования соответственно.

В процессорах Intel регистры MMX и FPU фактически занимают одни и те же регистры. Таким образом, невозможно смешивать команды типа FPU и MMX одновременно, потому что значения одной операции сместят другую.

3
ответ дан 28 November 2019 в 02:45
поделиться

Обычно программы сборки не содержат никакой специальной информации о переменных, указывающей, подписаны они или нет. Работа программиста состоит в том, чтобы знать, когда проверять, какие флаги и когда использовать, какие условия (т.е. использовать JA вместо JG).

Таким образом, вам нужно знать, с какой переменной вы собираетесь работать, чтобы вы знали, какие Команды для использования. Вот почему большинство языков программирования выдают предупреждения, когда программисты используют подписанные / неподписанные типы взаимозаменяемо (то есть без явного преобразования), поскольку это может быть сделано в оборудовании, но может привести к неожиданным результатам.

1
ответ дан 28 November 2019 в 02:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: