Re: Need help identifying left most zero bit [message #30128] |
Sat, 06 April 2002 22:01  |
David Fanning
Messages: 11724 Registered: August 2001
|
Senior Member |
|
|
Pavel Romashkin (pavel_romashkin@hotmail.com) writes:
> BTW, I have a colleague (who introduced me to IDL 3 yrs ago) whom I referred
> to your site a couple of times. He now goes there no matter what he needs.
> And he complains to me if he can't find something! Can you imagine.
Yeah, I can imagine. In fact, I'm going to start
complaining to you about it too. :-)
Cheers,
David
--
David W. Fanning, Ph.D.
Fanning Software Consulting
Phone: 970-221-0438, E-mail: david@dfanning.com
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Toll-Free IDL Book Orders: 1-888-461-0155
|
|
|
|
|
Re: Need help identifying left most zero bit [message #30131 is a reply to message #30130] |
Sat, 06 April 2002 12:43   |
Pavel Romashkin
Messages: 166 Registered: April 1999
|
Senior Member |
|
|
Phil,
Download the last function from David's page here:
http://www.dfanning.com/misc_tips/binary_hex.html
Then try:
print, (where(binary(-15s) eq 0))[0]
Cheers,
Pavel
"Phil" <plmcelwee@yahoo.com> wrote in message
news:a3589d11.0204051007.10df5da6@posting.google.com...
> I'm working with negative (two's complement) 16-bit numbers and could
> use some help. What I'd like to do is have a function that will tell
> me the location of the left-most zero bit for any given negative
> 16-bit number. Here are some examples to illustrate my goal.
>
> if x = -2, which is 1111 1111 1111 1110, then return 1
> if x = -5, which is 1111 1111 1111 1011, then return 3
> if x = -15, which is 1111 1111 1111 0111, then return 4
> if x = -8, which is 1111 1111 1111 1000, then return 3
>
> Is there something built-in to IDL that will accomplish this? Or does
> anyone have any other suggestions?
|
|
|
Re: Need help identifying left most zero bit [message #30152 is a reply to message #30131] |
Fri, 05 April 2002 11:40   |
TFE
Messages: 11 Registered: November 2001
|
Junior Member |
|
|
Phil,
think this is close-
x=-8
for i=0,15 do begin
y = UINT(ISHFT(-x-1,i)) ; 2's comp to swap bits, start left shift and check
leftmost bit
if ((y AND '8000'X) EQ '8000'X) then begin
print, 'position =', 16-i
i=15 ; exit loop
endif
endfor
"Phil" <plmcelwee@yahoo.com> wrote in message
news:a3589d11.0204051007.10df5da6@posting.google.com...
> I'm working with negative (two's complement) 16-bit numbers and could
> use some help. What I'd like to do is have a function that will tell
> me the location of the left-most zero bit for any given negative
> 16-bit number. Here are some examples to illustrate my goal.
>
> if x = -2, which is 1111 1111 1111 1110, then return 1
> if x = -5, which is 1111 1111 1111 1011, then return 3
> if x = -15, which is 1111 1111 1111 0111, then return 4
> if x = -8, which is 1111 1111 1111 1000, then return 3
>
> Is there something built-in to IDL that will accomplish this? Or does
> anyone have any other suggestions?
|
|
|
|