基础理论,大佬请绕道
关于数据类型的转换网上其实简单的分类了隐式转换和显式转换,基本上JAVA、C#、C++都遵循这个语法逻辑,如果光讲这个恐怕连培训班出身的人都不如吧,虽然我没上过培训班,但是估计他们也讲过这里面的深层原理。
1.数据在计算机的存储形式
大家都知道(没错只有你不知道)数据是以二进制存储在计算机的外存、内存、Cache里的。大概是这样子:
关于计算机的存储结构有机会也可以讲一讲,保证不鸽。
如果说是以二进制存储代码,这里就存在问题了,假如说我写一段这样的代码:
我们期望的是有符号短整形x转换成无符号短整型y,y的值应该为4321,但是实际上却转换成了61215
但是若将x转换为正数,转换的结果又没有出现奇怪的变化,这是怎么回事呢?
这时候懂哥就要讲了,这不就是补码的问题吗,搞这么多花里胡哨的。
但是呢,你懂了不代表别人懂啊。
没错,这就是今天的关键词:
补码
回到正题,继续上面的问题。为什么short型 -4321转换成ushort型就变成了一个莫名其妙的数字呢?我们来分析分析。
首先,要明白怎么把十进制数转换成二进制数:
第一点,必须要知道成文规定数字有正负的时候最高位的1和0分别代表负数和正数。
比如-1是11,1是01,-2是110&#x