zoukankan      html  css  js  c++  java
  • 软件开发数据类型基础

      一个字节包含8位, 第一位是符号位, 8位就可以是代码27次方, 所以范围为-2^7 ~ 2^7 - 1, 即-128到+127;

      一个字节包含8位,八位转化为二进制位11111111,此时的值为FF,或者00000000,值为00; 其中十进制的0-127也就是十六进制的00-7E,代表了ascll的英文码表,就是说英文只要一个字节就能够表示清楚....

      各种数据类型:

        byte类型就是1个字节,能够代表的范围为-2^7 ~ 2^7 - 1;

        short类型为2个字节,能够代表的范围为-2^16 ~ 2^16 - 1;

        int类型为4个字节,能够代表的范围为-2^31 ~ 2^31 - 1;

        long类型为8个字节,能够代表的范围为-2^64 ~ 2^64 - 1;

        flaot的类型也为4字节, 但是它的范围比int大得多(来自百度知道:位符号位+8位指数(q)+23位底数(b),其解释出来的形式是:b^q,由于指数q是8位有符号整数,范围是-128 ~ 127,23位的底数(无符号)最大值就是2 ^ 23,算上指数的话,最大可以表达到2 ^ 23 ^ 127,但是由于计算机的运算能力限制,并不能处理到如此大的数,但是其取值范围也会比32位整数大很多。 由于float类型是一个幂计算式,所以很多时候并不能表达一个精确值,例如0.1,如果使用float在内存中会被表示为0.10000000000000001,如果进行反复计算将会导致非常大的误);

        double类型也为8个字节;

      移位运算, 有符号左移"<<":

    public class Test {
        public static void main(String args[]) {
            System.out.println( 10<<1 ); //相当于: 10*2
            System.out.println( 10<<2 ); //相当于:10*2^2
            System.out.println( 10<<3 ); //相当于:10*2^3
            System.out.println( 10<<4 ); //相当于:10*2^4
        }
    }

    //输出:

      20
      40
      80
      160

      

    作者: NONO
    出处:http://www.cnblogs.com/diligenceday/

      有符号右移动">>":

    public class Test {
        public static void main(String args[]) {
            int num = 160;
            System.out.println( num>>1 );
            System.out.println( num>>2 );
            System.out.println( num>>3 );
            System.out.println( num>>4 );
        }
    }
    //输出: 80 40 20 10

       >>>:无符号右移,忽略符号位,空位都以0补齐;

       无符号右移有个特性必须记住,因为在二进制中:负数的值正数的取反+1 ,当我们对一个负数进行无符号右移, 那么无符号右移的值将会非常大:

    public class Test {
        public static void main(String args[]) {
            int num = -1;
            System.out.println( num>>>1 );
        }
    }
    //输出:2147483647

      ~:按位取反;

      &:按位且;

      |:按位或;

      ^:按位异或;

      但是这些玩意儿有什么用呢, 参考如下的js代码, 原文链接

    (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]

      会输出:"sb"

      或者这样装逼...

    ((""[~+[]]++)+"")[(+[])]+(!+[]+{})[(~((~+[]+~+[])<<(-(~+[]))))]

      会输出:"Ne"

      进制之间的转化参考, 进制参考

      10进制到2进制:

      

          

      2进制到10进制:

          

      

    作者: NONO
    出处:http://www.cnblogs.com/diligenceday/

  • 相关阅读:
    融资担保公司
    典当公司
    保险代理、经纪公司互联网保险
    财产、人身、养老保险公司
    105家基金子公司
    LogStash Download
    cmd使用管理员权限运行,启动路径不是当前目录
    Module controller in JMeter
    Elasticsearch-->Get Started--> Exploring Your Data
    What are the differences between Flyweight and Object Pool patterns?
  • 原文地址:https://www.cnblogs.com/diligenceday/p/5248196.html
Copyright © 2011-2022 走看看