Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Отрицательные целые числа и hexadecimal format.


Автор: delatNEX 5.9.2006, 09:12
Каким образом в питоне можно вывести  отрицат. целое число в 16-ном виде?

Например:
Код

a=23
b=-23
print hex(a),hex(b)


Вывод
>>>0x17 -0x17

Неужели надо преобразовывать самому? 
Код

c=256+b
print hex(c)


>>> 0xe9

Автор: Cr@$h 5.9.2006, 09:59

M
Cr@$h
Приветствую delatNEX, нового участника форума!
Не забывай нажимать на кнопку Код в форме ответа при помещении исходных кодов Python. Плюс выбирай из списка другие языки. Обрати внимание на шапку форума. Желаю успехов.


Автор: albertn 5.9.2006, 10:35
Скорее всего у тебя не получится вывести отрицательное чилсо в шеснадцатеричном виде именно в том виде, котором ты хочешь, ибо формат хранения этих чисел у питона слегка отличается от класической
На сколько я знаю, у питона нет ограничений на размер целых чисел, а если так, то скорее всего знак этого числа хранится не в дополнительном коде, а занимает один дополнительный бит (как у чисел  с плавающей точкой).
Код

>>> z = -2**1000
>>> z
-10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376L
>>> hex(z)
'-0x10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000L'

А для того, чтобы вывести число в дополнительном коде, необходимо заранее определенное количество занимаемых байт, а дальше можно по простой формуле:
Код

>>> r = 4
>>> x = -123
>>> x>=0 and hex(x) or hex(256**r+x)
'0xFFFFFF85L'

Автор: delatNEX 5.9.2006, 11:12
Cr@$h, спасибо за указания и пожелания. smile
Немного не понял о других языках. Как в других я хоть смутно, но представляю, интересно как это сделать в питоне.

albertn, благодарю.
В книге "Язык программирования Python" (авторы: Г. Россум, Ф.Л.Дж. Дрейк, Д.С. Откидач) встретил предложение : "Знак ‘-’ или ‘+’ не является частью литерала, а лишь унарным оператором, применяемым к объекту после его создания."
Наверное копать надо сюда. 

Автор: albertn 5.9.2006, 11:42
Цитата(delatNEX @  5.9.2006,  11:12 Найти цитируемый пост)
В книге "Язык программирования Python" (авторы: Г. Россум, Ф.Л.Дж. Дрейк, Д.С. Откидач) встретил предложение : "Знак ‘-’ или ‘+’ не является частью литерала, а лишь унарным оператором, применяемым к объекту после его создания."
Наверное копать надо сюда.
Так я же примерно про это и говорил.

Статья про представление чисел с первого попавшегося мне http://emc.km.ru/theory/info/b14_2.html.

Цитата(delatNEX @  5.9.2006,  11:12 Найти цитируемый пост)
Как в других я хоть смутно, но представляю, интересно как это сделать в питоне.

Так собсно я то примерчик привел, или тебе не это нужно?

Автор: delatNEX 5.9.2006, 12:12
smile
Цитата(delatNEX @  5.9.2006,  11:12 Найти цитируемый пост)
albertn, благодарю.


Автор: pythonwin 5.9.2006, 12:39
albertn, +1

Автор: Cr@$h 5.9.2006, 12:41
Цитата(delatNEX @  5.9.2006,  12:12 Найти цитируемый пост)
Cr@$h, спасибо за указания и пожелания. 

 smile 
Цитата(delatNEX @  5.9.2006,  12:12 Найти цитируемый пост)
Немного не понял о других языках. Как в других я хоть смутно, но представляю, интересно как это сделать в питоне.

Подсветка синтаксиса работает для многих других языков. Если понадобится -- смело выбирай из списка Код в форме ответа.
Цитата(delatNEX @  5.9.2006,  13:12 Найти цитируемый пост)

albertn, благодарю.


M
Cr@$h
albertn, ++ за помощь вновь пришедшему. Оп, увидел после написания поста. pythonwin опередил. ;-)

Автор: albertn 5.9.2006, 12:45
pythonwin и Cr@$h опять хором smile но все-равно спасибо.

Автор: pythonwin 5.9.2006, 12:52
Пожалуйста!

Автор: Cr@$h 5.9.2006, 13:06
Цитата(albertn @  5.9.2006,  13:45 Найти цитируемый пост)
pythonwin и Cr@$h опять хором  но все-равно спасибо. 

Нет, в этот раз я успел среагировать. Когда посто написал свой, от python уже появился перед моим. Хватит и одного тебе в этот раз  smile 

Автор: albertn 5.9.2006, 13:13
Цитата(Cr@$h @ 5.9.2006,  13:06)
Нет, в этот раз я успел среагировать. Когда посто написал свой, от python уже появился перед моим. Хватит и одного тебе в этот раз  smile

Я заметил. Меня просто последнее время начинает радовать активность форума, а точнее скорость ответов.

Автор: Cr@$h 5.9.2006, 13:32
Цитата(albertn @  5.9.2006,  14:13 Найти цитируемый пост)
Меня просто последнее время начинает радовать активность форума, а точнее скорость ответов. 

Да, активность резко возросла. Появляются новые участники, а значит форум растёт.

Автор: pythonwin 5.9.2006, 13:39
Цитата(Cr@$h @  5.9.2006,  20:32 Найти цитируемый пост)
Да, активность резко возросла. Появляются новые участники, а значит форум растёт. 

согласен, хотя последние дня три-четыре активность снизилась...

Автор: albertn 5.9.2006, 13:40
Цитата(pythonwin @ 5.9.2006,  13:39)
Цитата(Cr@$h @  5.9.2006,  20:32 Найти цитируемый пост)
Да, активность резко возросла. Появляются новые участники, а значит форум растёт. 

согласен, хотя последние дня три-четыре активность снизилась...

Лето закончилось, и началась учеба  smile 

Автор: Cr@$h 5.9.2006, 13:52
Цитата(albertn @  5.9.2006,  14:40 Найти цитируемый пост)
Лето закончилось, и началась учеба  


Цитата(pythonwin @  5.9.2006,  14:39 Найти цитируемый пост)
согласен, хотя последние дня три-четыре активность снизилась... 

Выходные, да учёба началась. Перестраиваются. Но активность скоро будт только возрастать, я уверен. Ладно, что-то мы зафлудили тут не-подетски, а то ещё delatNEX возьмёт за правило  smile  а ведь мы первый раз так...

Автор: delatNEX 5.9.2006, 14:24
не, не возьму smile
статус не тот, не Исследователь и не Опытный smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)