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

  • 相关阅读:
    61. 最长不含重复字符的子字符串
    60. 礼物的最大价值 (未理解)
    59. 把数字翻译成字符串
    58. 把数组排成最小的数
    57. 数字序列中某一位的数字 (不懂)
    spring data jpa 官方文档
    idea 编译报错 源发行版 1.8 需要目标发行版 1.8
    idea maven 依赖报错 invalid classes root
    solr
    spring boot 官方文档
  • 原文地址:https://www.cnblogs.com/kevinWu7/p/10163469.html
Copyright © 2011-2022 走看看