Re: [Dev-C++] Shift operators portability
Open Source C & C++ IDE for Windows
Brought to you by:
claplace
|
From: Michael D. S. <for...@hi...> - 2003-09-23 07:54:40
|
OK, with that "slight*" correction. It does multiply and divide by 4 (using
a 2), and as long as it's small numbers, and not negative numbers, it
appears to work reliably both ways and back and forth.
30 or 40 years ago, when computers were a lot slower and had almost no
memory, using this might have made sense. With a gigahertz computer, you're
probably much better off to just stick with the regular math functions. If
they are any slower, it's not by any noticeable amount, they are definitely
more portable, and much less error prone -- programmer, maintainer, and
otherwise (the dropped bits).
I'm not real sure that when you engage the math processor to multiply or
divide by 2,4,8,16 ect, that it doesn't just do this anyway -- only in a
more portable/reliable fashion.
Bottom line what's the point???
It is fun to play with though. Think about being able to control one little
bit in hundreds of millions of bytes -- now all I gotta do is figure out
which one, and what I'm gonna do with the rest of 'em :)
ms
* just the difference between working and not working
No wraparound, they drop off the end, at least on any machine I've ever
been familiar with.
I thought I would try, see how it works on this machine and got nothing. No
compiler error, and no change in the int.
Anyone know why this produces nothing (16) every time? And I tried other
numbers, in both positions, as well. Even tried turning it around -- Same
thing, nothing, every time. It seems there should be some effect, or an error..
I have an AMD processor and no idea if it's big or little endian.
#include<iostream.h>
#include<stdlib.h>
#include<fstream.h>
int main()
{
int count = 16;
count = count >> 2;
cout << "count = " << count << "\n";
count = count << 2;
cout << "count = " << count << "\n";
system ("pause");
return 0;
}
At 08:14 PM 9/22/03, you wrote:
>Hi there.
>
>Are the shift operators ( << and >> ) portable?
>i.e.
>Does x << 1 have the same effect as multiplying by 2 ?
>and
>Does x >> 1 have the same effect as dividing by 2?
>On both big and little endian order machines?
>
>also is there any wraparound?
>i.e. in a shift the bits that are pushed out of the data structure placed
>at the back-end of the data structure (on the other side of where they
>were pushed out)?
>
>Thanks in Advance
>David McKen
>
>
>Do you Yahoo!?
><http://us.rd.yahoo.com/evt=10469/*http://sitebuilder.yahoo.com>Yahoo!
>SiteBuilder - Free, easy-to-use web site design software
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Dev-cpp-users mailing list
Dev...@li...
TO UNSUBSCRIBE: http://www23.brinkster.com/noicys/devcpp/ub.htm
https://lists.sourceforge.net/lists/listinfo/dev-cpp-users
|