C# 原始静默溢出 - 通过 C# 的 CLR

标签 c# .net byte

我正在通过 Jeffrey Richter 通过 C# 阅读 CLR,在第 115 页上有一个由对基元的算术运算导致的溢出示例。有人可以解释一下吗?

Byte b = 100;
b = (Byte) (b+200); // b now contains 44 (or 2C in Hex).

我理解应该是溢出,因为byte是一个无符号的8位值,但为什么它的值等于44?

最佳答案

100+200 为 300; 300 是(以位为单位):

1 0010 1100

其中,只保留最后 8 位,所以:

0010 1100

也就是:44

关于C# 原始静默溢出 - 通过 C# 的 CLR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33689986/

相关文章:

c# - 使用计时器在visual c#中每秒调用一个方法

c# - 如何在 roslyn 中使用 Formatter.Format(SyntaxNode,Workspace)?

c# - 使用 Assert 测试异常以确保它们将被抛出的最佳方法

c++ - 从蓝牙地址读取 3 个字节?

java - 令人困惑的字节数组

java - 在java中显式转换时,short 128 = byte -128如何?

c# - WCF Com Interop GetRecordInfoFromGuids 返回旧格式或无效类型库

c# mono interop - 无法识别的配置部分 dllmap

c# - 如何从数码相机中获取录制的视频?

.NET DataSet 实现底层