运算符>>;在C#中

本文关键字:gt 运算符 | 更新日期: 2023-09-27 18:19:38

可能重复:
">gt”C#中的运算符do?

同样相关的:双倍的数字左移与乘法

这是C#中的代码。

我只需要知道我是否是对的。

我不确定是否使用运算符>>

此代码:

winHalfWidth = this.ClientSize.Width >> 1; // both is int

与相同

winHalfWidth = this.ClientSize.Width / 2;

如果我是对的,这个代码应该做:

quaterWidht = this.ClientSize.Width >> 2;

应与相同

quaterWidth = this.ClientSize.Width / 4;

所以两个问题:

  1. 对吗
  2. 使用>>/有什么区别吗?
    • 当我们谈论int值时
    • 当我们谈论浮动值时?(我认为可能有……但我不确定。)

回答是/否会很好:)

谢谢。

运算符>>;在C#中

事实上,它确实可以对int值执行您想要的操作,但您应该小心边缘情况,如负数或非常大的数字。

至于浮点数,它们的内存表示并没有那么简单,所以简单的右移不会起到除以2的作用。

这是移位运算符而不是除法,我们知道向左移位会将一个数字乘以2,对于exmaple

基数2中的2是:0010,如果我们向左移动一次,它将变为4或0100。

正如MSDN所说:

如果第一个操作数是int或uint(32位量),则移位计数由第二个操作数(第二个运算数&0x1f)的低位五位给出。

如果第一个操作数是长或ulong(64位数量),则移位计数由第二个操作数(第二个运算数&0x3f)的低位六位给出。

如果第一个操作数是int或long,则右移是算术移位(高阶空位设置为符号位)。如果第一个操作数是uint或ulong类型,则右移为逻辑移位(高阶位为零填充)。