c#中[明确]类型转换背后的逻辑

时间:2016-02-01 14:51:40

标签: c# visual-studio casting

基本上显式类型转换意味着可能存在精度损失

示例:

short s = 256;
byte b = (byte) s;
Console.WriteLine(b);
// output : 0

short s = 257;
byte b = (byte) s;
Console.WriteLine(b);
// output : 1

short s = 1024;
byte b = (byte)s;
Console.WriteLine(b);
Console.ReadKey();
// output : 0

以此输出为基础......?

1 个答案:

答案 0 :(得分:2)

Short是一个2字节的数字,字节是1字节!

当您从两个字节转换为一个字节时,您将丢失第一个

8位:1024(短:" 0000 0100"" 0000 0000")。

以二进制形式存在(二进制:" 0000 0000")= 0.

输出背后的基础很简单:

  1. 每个数字都表示为位,每8位产生1个字节。

  2. 字节保存" 0"到" 255"。

  3. 如果在编程中将较大的数字转换为较小的数字,则会丢失不仅仅是精度的数据。

  4. 在你的情况下,你在8之后失去了每一位(如果你想要转换的数字的值最后8位(比特可以是1或0),你会得到它,如果不是你会得到0)。

  5. P.S。在程序员模式下使用Windows计算器或在谷歌中找到一个程序将数字转换为位,这将更加清晰。