• 计算机中数据类型的转换(隐式)


    计算机中数据类型的转换分为隐式转换和显示转换。这里先说说隐式转换。

    隐式转换不需要做任何工作,例如var1=var2,如果var2的类型可以隐式转换为var1的类型,这个赋值语句就蕴含一个隐式转换。

    这里有一个隐式转换的规则:任何类型A,只要其取值范围完全包含在类型B的取值范围内,就可以隐式转换为类型B。如果不符合这个规则也仍希望转换,则可以用显示转换实现。

    这里便涉及一个取值范围的问题。我们首先引入数据类型,如下表:

    有符号的数据用二进制表示时,首位字符为符号位,0代表正,1代表负。

    他们的取值范围对应的为:

    bool和string没有隐式转换数值类型才有隐式转换,而char存储的是数值,所以char以可以当做一个数值类型。相应的知道,byte可以隐式的转换为(short,ushort,int,unit,long,ulong,float,double,decimal),为什么byte不能显示转换为char没有想明白~~~。类似的转换可以自己依照规则得来。这里还需要注意的一点是,虽然decimal的位数比double多,但是因为double的精度低,使其表示的范围大,而decimal则用了较多的位来表示精度,其范围相应的变小了。代码中时无法将double和decimal之间相互做隐式转换的,这点要牢记(我也没搞懂为啥~~)

    下节介绍显示转换。

    附带:

    关于原码反码,补码的概念,不知道看此篇文章的你是否熟悉。正数的原码、反码、补码都一样。关于负数,反码是将原码除符号位外所有位取反,补码是将其反码加1。

    关于+0和-0的分别表示,统一用8位来作为例子演示:

    可以看出只有用补码表示时,+0与-0是没有区别的。

  • 相关阅读:
    C++中pair的用法
    DFS例题:力扣200:岛屿数量
    DFS例题:力扣695:岛屿的最大面积
    DFS深度优先遍历
    java AQS源码分析
    spring实现事务原理
    java常见并发面试题目+示例代码
    java并发锁
    ThreadPoolExecutor
    线程通信
  • 原文地址:https://www.cnblogs.com/huang1990/p/3016621.html
Copyright © 2020-2023  润新知