Java_C++_C# 移位运算符比较

Java语言的移位运算符

Java语言的移位运算符: <<, >>, >>>3.

publicclass Test

{

         publicstaticvoidmain(String[] args)

         {

                   /*

                    * 移位运算符只对byte,short,int,longchar类型有效

                    */

                  

                   //()符号数, 左移(<<),最高位符号位都将被右边的位覆盖

                   bytenum = (byte)0x8F;

                   num<<= 1;

                   System.out.println("10001111<< 1 = " + Integer.toBinaryString(num));

                   num = (byte)0x7F;

                   num<<= 1;

                   System.out.println("01111111<< 1 = " + Integer.toBinaryString(num));

 

                   //()符号数, 右移(>>),最高位符号位都将保留

                   num = (byte)0x8F;

                   num>>= 1;

                   System.out.println("10001111>> 1 = " + Integer.toBinaryString(num));

                   num = (byte)0x7F;

                   num>>= 1;

                   System.out.println("01111111>> 1 = " + Integer.toBinaryString(num));            

 

              //()符号数(只对32位和64位数有效),无符号右移(>>>),最高位符号位都将变成0

                   intn =0x8FFFFFFF;

                   n>>>= 1;

                   System.out.println("0x8FFFFFFF>>> 1 = " + Integer.toHexString(n));

                   n =0x7FFFFFFF;

                   n>>>= 1;

                   System.out.println("0x7FFFFFFF>>> 1 = " + Integer.toHexString(n));

         }

}

 

运算结果,如下:

10001111 << 1 = 00011110

01111111 << 1 = 11111110

10001111 >> 1 = 11000111

01111111 >> 1 = 00111111

0x8FFFFFFF >>> 1 = 0x47FFFFFF

0x7FFFFFFF >>> 1 = 0x 3FFFFFFF

 

C++语言的移位运算符

 

C++语言的移位运算符: <<, >>2.

int _tmain(int argc, _TCHAR* argv[])

{

         /*

         * 移位运算符最好只对整数类型运算,这样才有意义

         */

 

         //()符号数, 左移(<<),最高位符号位都将被右边的位覆盖

         char num =(char)0x8F;

         num<<= 1;

         printf("0x8F<< 1 = 0x%02X\n", num);

         num =(char)0x7F;

         num<<= 1;

         printf("0x7F<< 1 = 0x%02X\n", num);

 

         //()符号数, 右移(>>),最高位符号位都将保留

         num =(char)0x8F;

         num>>= 1;

         printf("0x8F>> 1 = 0x%02X\n", num);

         num =(char)0x7F;

         num>>= 1;

         printf("0x7F>> 1 = 0x%02X\n", num);

 

         return 0;

}

 

运算结果,如下:

0x8F << 1 =0x1E

0x7F << 1 = 0xFE

0x8F >> 1 =0xC7

0x7F >> 1 = 0x3F

 

C#语言的移位运算符

C#语言的移位运算符: <<, >>2.

public static void Main(string[] args)

{

         /*

         * 移位运算符最好只对整数类型运算,这样才有意义

         */

 

         //()符号数, 左移(<<),最高位符号位都将被右边的位覆盖

         sbyte sNum= unchecked((sbyte)0x8F);

         sNum<<= 1;

         Console.WriteLine("0x8F<< 1 = 0x{0,-2:X2}", sNum);

         byte usNum= unchecked((byte)0x7F);

         usNum<<= 1;

         Console.WriteLine("0x7F<< 1 = 0x{0,-2:X2}", usNum);

 

         //()符号数, 右移(>>),最高位符号位都将保留

         sNum =unchecked((sbyte)0x8F);

         sNum>>= 1;

         Console.WriteLine("0x8F>> 1 = 0x{0,-2:X2}", sNum);

         usNum =unchecked((byte)0x7F);

         usNum>>= 1;

         Console.WriteLine("0x7F>> 1 = 0x{0,-2:X2}", usNum);

 

         Console.ReadKey();

}

 

运算结果,如下(C++的结果相同):

0x8F << 1 =0x1E

0x7F << 1 = 0xFE

0x8F >> 1 =0xC7

0x7F >> 1 = 0x3F

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值