bit shifting question

D

David Stockwell

Hi,
My background is c/c++ and java. I'm learning python at this point.

My question is does python share java's peculiar mode of bit shifting, or
does python adhere closer to c's bit shifting?

in java there are 3 kinds of bit shifts:
<< (shift left)
In C, the behavior is
<< (shift left)
I tried looking around but haven't really got an answer yet. I guess I need
to write a mini python script. Please don't write any code, I'm just
looking for a website or something where I can figure this stuff out in
python.

Thanks in advance,

David
-------
Cell: http://cellphone.duneram.com/index.html
Cam: http://www.duneram.com/cam/index.html
Tax: http://www.duneram.com/index.html

_________________________________________________________________
FREE pop-up blocking with the new MSN Toolbar – get it now!
http://toolbar.msn.click-url.com/go/onm00200415ave/direct/01/
 
M

Michael Hudson

David Stockwell said:
Hi,
My background is c/c++ and java. I'm learning python at this point.

My question is does python share java's peculiar mode of bit shifting,
or does python adhere closer to c's bit shifting?

The right shift in Python is arithmetic, i.e. preserves the sign bit.
in java there are 3 kinds of bit shifts:
<< (shift left)

In C, the behavior is
<< (shift left)

Have you tried this recently? I believe that whether >> sign fills is
undefined by the C standard but most of the time it dos.
I tried looking around but haven't really got an answer yet. I guess
I need to write a mini python script.

No you don't! If you haven't realized that you can do

$ python
Python 2.2.2 (#1, Feb 24 2003, 19:13:11)
[GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.-1

you have MUCH to learn about Python...

Cheers,
mwh
 
E

Erik Max Francis

Michael said:
Have you tried this recently? I believe that whether >> sign fills is
undefined by the C standard but most of the time it dos.

It's implementation defined, to be more exact.
 
S

Scott David Daniels

Grant said:
Which one is the sign bit? IOW, how wide is a "word"?
In most cases, you should not be able to discover how wide
a "word" is. Python is trying to move to a single integer
data type which is a combination of the current "long" and
"int" where the internal representation is an implementation
detail. Unfortunately, shifting is one of those places you
can still discover the "width" with code like:

def wordwidth():
for shift in range(256):
if 1 << shift < 0:
return 1 + shift
 
D

David Eppstein

Scott David Daniels said:
Unfortunately, shifting is one of those places you
can still discover the "width" with code like:

def wordwidth():
for shift in range(256):
if 1 << shift < 0:
return 1 + shift

Of course this will give a warning in 2.3 and fail to work in 2.4...
I wish I could get the 2.4 behavior now with a from __future__ import
but I don't see one for this, instead I find myself doing 1L<<shift a
lot.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,236
Members
46,822
Latest member
israfaceZa

Latest Threads

Top