我是靠谱客的博主 痴情小蝴蝶,最近开发中收集的这篇文章主要介绍14.8 Shift operators,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

The << and >> operators are used to perform bit shifting operations.
shift-expression:
additive-expression
shift-expression << additive-expression
shift-expression >> additive-expression
For an operation of the form x << count or x >> count, binary operator
overload resolution (?4.2.4) is
applied to select a specific operator implementation. The operands are
converted to the parameter types of
the selected operator, and the type of the result is the return type of the
operator.
Chapter 14 Expressions
163
When declaring an overloaded shift operator, the type of the first operand
must always be the class or struct
containing the operator declaration, and the type of the second operand
must always be int.
The predefined shift operators are listed below.
?Shift left:
int operator <<(int x, int count);
uint operator <<(uint x, int count);
long operator <<(long x, int count);
ulong operator <<(ulong x, int count);
The << operator shifts x left by a number of bits computed as described
below.
The high-order bits outside the range of the result type of x are
discarded, the remaining bits are shifted
left, and the low-order empty bit positions are set to zero.
?Shift right:
int operator >>(int x, int count);
uint operator >>(uint x, int count);
long operator >>(long x, int count);
ulong operator >>(ulong x, int count);
The >> operator shifts x right by a number of bits computed as described
below.
When x is of type int or long, the low-order bits of x are discarded, the
remaining bits are shifted
right, and the high-order empty bit positions are set to zero if x is
non-negative and set to one if x is
negative.
When x is of type uint or ulong, the low-order bits of x are discarded, the
remaining bits are shifted
right, and the high-order empty bit positions are set to zero.
For the predefined operators, the number of bits to shift is computed as
follows:
?When the type of x is int or uint, the shift count is given by the
low-order five bits of count. In other
words, the shift count is computed from count & 0x1F.
?When the type of x is long or ulong, the shift count is given by the
low-order six bits of count. In
other words, the shift count is computed from count & 0x3F.
If the resulting shift count is zero, the shift operators simply return the
value of x.
Shift operations never cause overflows and produce the same results in
checked and unchecked contexts.
When the left operand of the >> operator is of a signed integral type, the
operator performs an arithmetic
shift right wherein the value of the most significant bit (the sign bit) of
the operand is propagated to the
high-order empty bit positions. When the left operand of the >> operator is
of an unsigned integral type, the
operator performs a logical shift right wherein high-order empty bit
positions are always set to zero. To
perform the opposite operation of that inferred from the operand type,
explicit casts can be used. [Example:
For example, if x is a variable of type int, the operation
unchecked((int)((uint)x >> y)) performs a
logical shift right of x. end example]

最后

以上就是痴情小蝴蝶为你收集整理的14.8 Shift operators的全部内容,希望文章能够帮你解决14.8 Shift operators所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部