+ 1
Как получить отрицательное число?
print(int('ff49', 16))# должно быть -183, а выдаëт 65353
8 ответов
+ 1
Чтобы преобразовать из систоюемы с минусом в систему без минуса, нужно инвертировать и добавить 1, а из hex в десятиричную ты правильно преобразоовал))
+ 1
Оно выдаёт 65353 потому что 0xFF49 = 65353d
Чтобы выдать -183, нужно использовать hex '-b7'
Вот так:
https://code.sololearn.com/cJDLWQ0NA5kW/?ref=app
+ 1
Попробуйте в калькуляторе виндовском. Там -183.
+ 1
Число изначально отрицательное: 0xff49.
+ 1
Алёша Попович, да просто это разные методы хоронить отрицательные значения... В машинном коде будет 0xFF49
А обычное 16 ричное число будет
-0xb7....
Поскольку в машинном коде нельзя использовать - для отрицательных чисел, их обычно инвиртируют и добовляют 1... Арифметика до сих пор так работает, но чтобы знать положительное число или отрицательное, нужен флаг ALU...
(это а функция принимает обычные 16 ричные числа..)
+ 1
Алёша Попович, decimal тож не поможет... Можно сделать битовую маску (бинарную)... Но тип зачем? Нельзя обычными числами пользоваться?
0
Т. е. int мне не поможет? А decimal?
0
Нет, только в шестнадцатеричной и как есть, положительные и отрицательные, вопрос как корректно преобразовывать. Когда-то было что-то про избыточное добавление, но не могу вспомнить.