|
#1
|
||||
|
||||
24-битные числа
Подскажите, как можно осуществить работу с 24-х битными числами?
Т.е. нужен перевод из 24-х битного целого в 32-х битное целое. Определять знак 24-bit числа можно проверкой "foo > 8388607"? — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#2
|
||||
|
||||
Если оно целое, зачем проверять знак? SHR 8 не поможет?
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
||||
|
||||
Цитата:
Код:
mov ebx, eax shr ebx, 16 movsx bx, bl shl ebx, 16 or ebx, eax Еще вариант, но не такой прикольный: Код:
bt eax, 23 jnc @positive or eax, 0xFF000000 @positive: jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 03.10.2013 в 01:40. |
#4
|
||||
|
||||
Или я чего-то не понял или одно из двух
eax = $123456 Код:
mov ebx, eax ; ebx = $123456 shr ebx, 16 ; ebx = $12 movsx bx, bl ; ebx = $12 shl ebx, 16 ; ebx = $120000 or ebx, eax ; ebx = $123456 Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
||||
|
||||
Цитата:
Сделал так: Код:
var foo: Integer; begin foo := $FFFFFF; foo := (((foo and $800000) shr 23)*$FF000000) or foo; ShowMessage(inttostr(foo)); З.Ы. Bargest, прикольные решение — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось M.A.D.M.A.N., 03.10.2013 в 08:32. |
#6
|
||||
|
||||
Цитата:
А для отрицательного (eax = $823456, т.е. старший из 24 бит равен 1): Код:
mov ebx, eax ; ebx = $823456 shr ebx, 16 ; ebx = $82 movsx bx, bl ; ebx = $FF82, т.к. movsx копирует старший бит во все недостающие shl ebx, 16 ; ebx = $FF820000 or ebx, eax ; ebx = $FF823456 MADMAN, Код:
(((foo and $800000) shr 23)*$FF000000) Код:
((foo and $800000) *$1FE) jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 03.10.2013 в 22:25. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
M.A.D.M.A.N. (04.10.2013)
|