java中的">>>"在c#中如何实现

解决方案 »

  1.   

    >>> 干吗的,java不会 汗
      

  2.   

    移位运算符
    移位运算符面向的运算对象也是二进制的“位”。可单独用它们处理整数类型(主类型的一种)。左移位运算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。“有符号”右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。Java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。这一运算符是C或C++没有的。
      

  3.   

    Java里有">>>"吗?
    ">>"在C#里是可以被重载的
      

  4.   

    >>
    如果第一个操作数为 int 或 long,则右移位是算术移位(高序空位设置为符号位)。如果第一个操作数为 uint 或 ulong 类型,则右移位是逻辑移位(高位填充 0)。按这个来说,对于uint 或ulong的移位运算,就相当于JAVA中的>>>,所以要实现JAVA中的>>>,就保证左操作数是uint 或ulong即可,如果不是,则要转换。
    我估计JAVA有这东东是因为他没有 无符号类型吧
      

  5.   

    Java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。
    --
    java不懂,如果像这位仁兄说的,那padleft和padright应该可以实现吧
      

  6.   

    与C#等价的java代码
      public static int foo(int x, int y) {
        int mask = 0x7fffffff; //Integer.MAX_VALUE
        for (int i = 0; i < y; i++) {
          x >>= 1;
          x &= mask;
        }
        return x;
      }  //测试,没有考虑移位数<=0的控制
      public static void main(String[] args) {
        System.out.println((1 >>> 3) == foo(1, 3));
        System.out.println((1 >>> 5) == foo(1, 5));
        System.out.println((1 >>> 7) == foo(1, 7));
        System.out.println((10 >>> 9) == foo(10, 9));
        System.out.println((-1 >>> 5) == foo(-1, 5));
        System.out.println((-9999 >>> 7) == foo(-9999, 7));
        System.out.println((-1234 >>> 3) == foo(-1234, 3));
        System.out.println((-10000 >>> 5) == foo(-10000, 5));
        System.out.println((-10000 >>> 7) == foo(-10000, 7));
      }java论坛解决了,兄弟们辛苦了...