Консультация № 188413
13.12.2015, 10:57
0.00 руб.
0 6 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
1) Подскажите пожалуйста,как сравниваются числа в двоичной системе в знаковой и беззнаковой арифметике.? Например Ф1 = -10110000, О1=10110000.
2) При переводе двоичного числа в шестнадцатеричное, существует напрямую один способ (разбиение на тетраиды)?

Заранее спасибо

Обсуждение

давно
Посетитель
7438
7205
13.12.2015, 15:51
общий
это ответ
Здравствуйте, Владимир!
1) При хранении числа фактически нет различий между знаковым и беззнаковым числом.
Все зависит от интерпретации последовательности бит. Одни и те же биты могут быть как беззнаковым числом, так и знаковым.
При кодировании знаковых чисел используется, так называемый, дополнительный код. При котором старший бит понимается, как знак числа
Т.о., оба приведенных числа - суть одно и то же, т.к. нет дополнительного места под знак. Если посмотреть на приведенное число, как
на знаковое, то оно будет равно (-80).
С другой стороны, данное число может быть интерпретировано и как беззнаковое, равное 176
Чтобы получить отрицательное число, равное по модулю положительному, необходимо сделать инверсию бит и прибавить единицу.
Байтовое знаковое изменяется в пределах от -128 до +127, а беззнаковое - от 0 до 255

Теперь о сравнении...
После сравнения чисел или арифметических операций с числами все сводится к анализу выставляемых флажков
Если тип числа - беззнаковый, то анализируются одни флажки, если знаковый - то другие.
В языках высокого уровня каждая переменная имеет тип - знаковый или беззнаковый.
Это говорит компилятору, какие именно флажки надо использовать при анализе результата операции.
Ну а в Ассемблере программист должен сам указывать нужные команды...

2) Действительно, одна 16-ричная цифра соответствует четырем битам. А т.к. байт состоит из 8-ми, то
байт можно записать двуми 16-ричными цифрами, каждая из которых соответствует одной тетраде

Если что-то еще остается непонятным - спрашивайте в мини-форуме
5
Спасибо большое
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
399077
12
13.12.2015, 17:54
общий
Адресаты:
А если знак не определен для числа, например даны нам числа 01010000 и 10110000, и нам нужно их сравнить в знаковой арифметике. Получается, что мы должны число 10110000 представить в дополнительном коде(т.к начинается с "1") и перевести 10-ю с.с и сравнить в той же системе счисления число 01010000, без переводе в доп.код.
Я прав?
Спасибо.
давно
Посетитель
7438
7205
13.12.2015, 18:53
общий
13.12.2015, 19:09
Адресаты:
Если смотреть на числа 01010000 и 10110000, как на знаковые, то первое - положительное, второе - отрицательное
Первое = 010100002 = 8010, второе = 101100002 = -8010
Если сравним их "в знаковой арифметике", то, естественно получим, что первое > второго
Ничего никуда не надо переводить. Числа сравниваются, как есть. Все получается автоматически
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
13.12.2015, 18:58
общий
13.12.2015, 19:00
Адресаты:
Дополнительный код - это просто способ представления чисел, придуман для того, чтобы все получалось "на автомате"
Например, 2-1 = 1, 1-1=0, 0-1=-1=111111112 с заемом, -1+1=11111111+1=0 с переносом
Флажки состояний учитывают все эти моменты.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
399077
12
17.12.2015, 19:09
общий
Адресаты:
Спасибо. Все получилось.

Тут проблемка возникла. Нужно составить 16-е ASCI-коды - числа 10110000.
Для представления,я воспользовался таблицей ASCI и нашел соответсвия для двоичного числа 10110000 - В0.
Я прав? или B0 это 16-й код,но не 16-й ASCI код.

Спасибо заранее!
давно
Посетитель
7438
7205
17.12.2015, 19:17
общий
Адресаты:
Здравствуйте!
Все правильно, 101100002 = B016
B0 это 16-й код,но не 16-й ASCI код
А ASCII-код это не что иное, как число, которым закодирован данный код. Другими словами - это одно и то же.
Все зависит, как смотреть на байт. Можно считать ASCII-кодом, а можно знаковым или беззнаковым числом
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа