| Topic: |
DEVELOP > c-Plus-Plus |
| User: |
"" |
| Date: |
03 Sep 2006 03:20:20 PM |
| Object: |
Is there a logic shift operator in C++? |
Dear all,
Is there a logic shift operator in C++? I tried ">>", it is an
arithmetic shift operator.
Thanks!
-Andy
.
|
|
| User: "Steve Pope" |
|
| Title: Re: Is there a logic shift operator in C++? |
03 Sep 2006 03:24:21 PM |
|
|
<yuyang08@gmail.com> wrote:
Dear all,
Is there a logic shift operator in C++? I tried ">>", it is an
arithmetic shift operator.
No, there is no built-in logical shift right.
Steve
.
|
|
|
| User: "Frederick Gotham" |
|
| Title: Re: Is there a logic shift operator in C++? |
03 Sep 2006 03:34:41 PM |
|
|
Steve Pope posted:
Is there a logic shift operator in C++? I tried ">>", it is an
arithmetic shift operator.
As far as I know, it's implementation-defined as to whether it's logical
shift or arithmetic shift.
No, there is no built-in logical shift right.
You could probably make one yourself by using a combination of things:
(1) Macros to determine whether the system is sign-magnitude, one's
complement or two's complement.
(2) Usage of the IMAX_BITS macro (you can do a Google Groups search for
this.)
(3) Usage of bitwise operators.
It wouldn't be a mammoth task.
--
Frederick Gotham
.
|
|
|
|
|
| User: "Jens Theisen" |
|
| Title: Re: Is there a logic shift operator in C++? |
03 Sep 2006 03:46:12 PM |
|
|
writes:
Is there a logic shift operator in C++? I tried ">>", it is an
arithmetic shift operator.
It's arithmetical or logical depending on whether or not the integer
you are shifting is signed or not.
Jens
.
|
|
|
| User: "osmium" |
|
| Title: Re: Is there a logic shift operator in C++? |
03 Sep 2006 05:14:00 PM |
|
|
"Jens Theisen" writes:
Is there a logic shift operator in C++? I tried ">>", it is an
arithmetic shift operator.
It's arithmetical or logical depending on whether or not the integer
you are shifting is signed or not.
Actually, there is an established meaning for those two phrases.
Hint: The operation performed does not depend on the value of the operand.
.
|
|
|
| User: "Rolf Magnus" |
|
| Title: Re: Is there a logic shift operator in C++? |
04 Sep 2006 04:39:21 AM |
|
|
osmium wrote:
"Jens Theisen" writes:
Is there a logic shift operator in C++? I tried ">>", it is an
arithmetic shift operator.
It's arithmetical or logical depending on whether or not the integer
you are shifting is signed or not.
Actually, there is an established meaning for those two phrases.
Hint: The operation performed does not depend on the value of the operand.
No, but on the type.
Hint: "singned"/"unsigned" doesn't say anything about the value.
.
|
|
|
|
| User: "Clark S. Cox III" |
|
| Title: Re: Is there a logic shift operator in C++? |
03 Sep 2006 06:48:55 PM |
|
|
osmium wrote:
"Jens Theisen" writes:
Is there a logic shift operator in C++? I tried ">>", it is an
arithmetic shift operator.
It's arithmetical or logical depending on whether or not the integer
you are shifting is signed or not.
Actually, there is an established meaning for those two phrases.
Yes, and they mean exactly the same thing when applied to unsigned integers.
--
Clark S. Cox III
clarkcox3@gmail.com
.
|
|
|
| User: "osmium" |
|
| Title: Re: Is there a logic shift operator in C++? |
03 Sep 2006 09:04:03 PM |
|
|
"Clark S. Cox III" writes:
osmium wrote:
"Jens Theisen" writes:
Is there a logic shift operator in C++? I tried ">>", it is an
arithmetic shift operator.
It's arithmetical or logical depending on whether or not the integer
you are shifting is signed or not.
Actually, there is an established meaning for those two phrases.
Yes, and they mean exactly the same thing when applied to unsigned
integers.
The hardware instruction repertoires that I know of that provide both
arithmetic and logical shifts have four shift instructions, not three.
Unless you are terribly clever it is going to take longer to force a
preliminary step of seeing what the value of the operand is, before doing
the shift. YMMV.
.
|
|
|
| User: "Rolf Magnus" |
|
| Title: Re: Is there a logic shift operator in C++? |
04 Sep 2006 04:40:49 AM |
|
|
osmium wrote:
"Clark S. Cox III" writes:
osmium wrote:
"Jens Theisen" writes:
Is there a logic shift operator in C++? I tried ">>", it is an
arithmetic shift operator.
It's arithmetical or logical depending on whether or not the integer
you are shifting is signed or not.
Actually, there is an established meaning for those two phrases.
Yes, and they mean exactly the same thing when applied to unsigned
integers.
The hardware instruction repertoires that I know of that provide both
arithmetic and logical shifts have four shift instructions, not three.
Really? I don't know many, but those that I know only have three, because
there is no difference between a logic and an arithmetic left shift, but
there is one for the right shift. Sometimes, however, there are two
different names on assembler level for the left shift that just resolve to
the same instruction.
.
|
|
|
|
| User: "Clark S. Cox III" |
|
| Title: Re: Is there a logic shift operator in C++? |
03 Sep 2006 09:48:40 PM |
|
|
osmium wrote:
"Clark S. Cox III" writes:
osmium wrote:
"Jens Theisen" writes:
Is there a logic shift operator in C++? I tried ">>", it is an
arithmetic shift operator.
It's arithmetical or logical depending on whether or not the integer
you are shifting is signed or not.
Actually, there is an established meaning for those two phrases.
Yes, and they mean exactly the same thing when applied to unsigned
integers.
The hardware instruction repertoires that I know of that provide both
arithmetic and logical shifts have four shift instructions, not three.
Unless you are terribly clever it is going to take longer to force a
preliminary step of seeing what the value of the operand is, before doing
the shift. YMMV.
What are you talking about hardware instruction repertoires for? I was
simply pointing out that, for unsigned integers, arithmetic and logical
shifts are 100% identical; There is no sign bit to sign extend; there is
no decision to be made.
--
Clark S. Cox III
clarkcox3@gmail.com
.
|
|
|
|
|
|
|
|

|
Related Articles |
|
|