zoukankan      html  css  js  c++  java
  • JAVA:移位运算符

    位运算符用来对二进制位进行操作,分为左移位操作和右移位操作。
    JAVA:移位运算符左移位运算符
      左移位运算的符号为<<,左移位运算符左面的操作元称作被移位数,右面的操作数称作移位量。
      特点
       是双目运算符。
       操作元必须是整型类型的数据。
      左位移的过程
       假设a是一个被移位的整型数据,n是位移量。
       a<<n运算的过程是通过将a的所有位都左移n位,每左移一个位,左边的最高位(即左边的第1位)上的0或1被移出丢弃,并用0填充右边的低位。
       ◆比如:对整形数 8<<1的计算
         8的二进制表示: 0000,0000,0000,0000,0000,0000,0000,1000
         左移一位的结果:0000,0000,0000,0000,0000,0000,0001,0000
      注意
       左位移操作是对整型数的操作,操作符两边必须是整型。
       比整型更小的数据类型数据将被转换成整型进行运算,比整型更大的数据类型数据是不能进行移位运算的。
       比整型更小的数据类型数据将被转换成整型时:对于正数将高位用0填充;负数将高位用1填充。
       例:
          byte a = -8;
          System.out.println(a<<2);
          结果:-32
          1111,1111,1111,1111,1111,1111,1111,1000
                    
          1111,1111,1111,1111,1111,1111,1110,0000
       在进行a<<n运算时
        如果a是byte、short或int型数据,系统总是先计算出n%32的结果m,然后进行a<<m运算。
        对于long型数据,系统总是先计算出n%64的结果m,然后进行a<<m运算。
        比如:
         对于int数 5<<1与5<<33的结果相等;
         对于long数 5<<1与5<<65的结果相等。
    JAVA:移位运算符右移位运算符
      右移位运算的符号为>>,右移位运算符左面的操作元称作被移位数,右面的操作数称作移位量。
      特点
       ◆是双目运算符。
       操作元必须是整型类型的数据。
      右位移的过程
       假设a是一个被移位的整型数据,n是位移量。
       a>>n运算的过程是通过将a的所有位都右移n位,每右移一个位,右边的最低位(即右边的第1位)上的0或1被移出丢弃,并用0或1填充左边的高位(a是正数时用0填充,负数时用1填充)。
       比如:对整形数 8>>1的计算
         8的二进制表示: 0000,0000,0000,0000,0000,0000,0000,1000
         右移一位的结果:0000,0000,0000,0000,0000,0000,0000,0100
      注意
       右位移操作是对整型数的操作,操作符两边必须是整型。
       比整型更小的数据类型数据将被转换成整型进行运算,比整型更大的数据类型数据是不能进行移位运算的。
       比整型更小的数据类型数据将被转换成整型时:对于正数将高位用0填充;负数将高位用1填充。
       例:
          byte a = -8;
          System.out.println(a>>2);
          结果:-2
          1111,1111,1111,1111,1111,1111,1111,1000
                  ↓
          1111,1111,1111,1111,1111,1111,1111,1110
       在进行a>>n运算时
        如果a是byte、short或int型数据,系统总是先计算出n%32的结果m,然后进行a>>m运算。
        对于long型数据,系统总是先计算出n%64的结果m,然后进行a>>m运算。
        比如:
          对于int数 5>>1与5>>33的结果相等;
          对于long数 5>>1与5>>65的结果相等。

  • 相关阅读:
    【数据库学习笔记】什么是DBO?
    【计算机网络学习笔记】端口号
    【计算机网络学习笔记】什么是cookie以及cookie劫持的基本概念
    【python学习笔记】pthon3.x中的文件读写操作
    【Java学习笔记】JFrame类的pack()与validate()方法的区别(待补充)
    【python学习笔记】python中的模块,类,函数,对象,实例(与JAVA的比较)
    virtual hust 2013.6.23 数学杂题基础题目 M
    virtual hust 2013.6.23 数学杂题基础题目 F
    virtual hust 2013.6.23 数学杂题基础题目 E
    virtual hust 2013.6.23 数学杂题基础题目 D
  • 原文地址:https://www.cnblogs.com/hudingbo/p/3541373.html
Copyright © 2011-2022 走看看