zoukankan      html  css  js  c++  java
  • C#中int short Int16 Int32 Int64区别

    Java中没有Int32,Int64,,java中只有int,short,long

    Java中int就代表Int32 ,short就代表Int16,long就代表Int64

    首先,几个基本的关键字:

    Int16 = short, 占2个字节. -32768 ~ 32767

    Int32 = int, 占4个字节. -2147483648 ~ 2147483647

    Int64 = long, 占8个字节. -9223372036854775808 ~ 9223372036854775807

    这样, 看起来比short,int,long更加直观些

    MSDN中说int就是Int32的别名,是等价的,short,long同理也是别名

    详解Int32

    为什么Int32 就等于 int, 很简单,在VS中写 int a=1;  选中a , F12转到定义就是System.Int32.

    Int32就是代表一共能存储2^32次方,一共有42,9496,7296个数

    从-21,4748,3648 到 +21,4748,3647 为止,为什么正数比负数小一个数,因为0占了一个数

    所以Int32的最大数并不是42,9496,7296,而是(2^31)-1=+21,4748,3647,为什么是31次方,因为是有符号整型,最高位要空出来判断是不是负数,所以是31次方,-1是因为0占了一个数。

    但是一共还是能存储2^32次方 既42,9496,7296个数,因为有正负数,其实一样的,还是2的32次方个数

    如图:

    所以Int16和Int64也是同理的。只不过是把2^32换成2^16或者2^64而已....

    无符号整形Uint32

    上面说的都是有符号整数,既signed integer, 就是可以储存正负数的,而无符号整数就是只能存储正数,既unsigned integer

    在C#中用Uint16,UInt32,Uint64等表示

    跟上面同理

    ushort =UInt16 

    uint =UInt32   ,0 ~ 4364967295

    ulong =UInt64

    UInt32和Int32一样 ,也是代表一共能存储2^32次方,一共有42,9496,7296个数

    但是因为只有正数和0,所以最大值为4364967295, 既2^32-1,-1是因为0占了一个数


     

    溢出会如何

    更进一步,尝试Int32 a=Int32.MaxValue+1 , 会不会报错?

    答案是不会,至少在VS中不会,编译器会自动把a赋值成-21,4748,3648,既最小数值,若加2,则为-21,4748,3647,依次递加。。。

    同理,UInt32 a=UInt32.MaxValue+1 ,a就是0,既,若+2,a=1,依次递加。。。

    https://www.cnblogs.com/EEEE1/p/8098876.html

    https://www.cnblogs.com/raytheweak/p/7290617.html

  • 相关阅读:
    MyBatis学习记录02篇
    Mybatis学习记录01篇
    项目路径问题
    项目01-JavaWeb网上书城01之工具类
    面试篇01
    创建多线程的方式
    关于web.xml
    快捷键----快速生成未实现的方法
    自动化学习-Day03
    自动化学习-Day02
  • 原文地址:https://www.cnblogs.com/kevinWu7/p/10163469.html
Copyright © 2011-2022 走看看