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

use*_*088 2 .net c# byte

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

Byte b = 100;
b = (Byte) (b+200); // b now contains 44 (or 2C in Hex).
Run Code Online (Sandbox Code Playgroud)

我知道应该有溢出,因为byte是无符号的8位值,但为什么它的值等于44?

Mar*_*ell 7

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

1 0010 1100
Run Code Online (Sandbox Code Playgroud)

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

0010 1100
Run Code Online (Sandbox Code Playgroud)

这是:44