我的问题是这个赋值是如何在c#中发生的?我的意思是,它如何计算答案1(用257),它如何计算0(用256)?
代码是:
int intnumber=257;
byte bytenumber=(byte)intnumber;//the out put of this code is 1
int intnumber=256;
byte bytenumber=(byte)intnumber;//the out put of this code is 0
Run Code Online (Sandbox Code Playgroud)
我的问题是发生了什么,第一个代码中的输出是:1,第二个代码中的输出是:0
hat*_*ica 10
A byte只占用内存中的一个字节.一个int占用4个字节的内存.这是您提到的一些int值的二进制表示:
most significant least significant
255: 00000000 00000000 00000000 11111111
256: 00000000 00000000 00000001 00000000
257: 00000000 00000000 00000001 00000001
Run Code Online (Sandbox Code Playgroud)
您还可以在将负int值转换为字节时查看其工作原理.当转换为字节时,-255的int值为1.
-255: 11111111 11111111 11111111 00000001
Run Code Online (Sandbox Code Playgroud)
将int转换为字节时,只将最低有效字节分配给字节值.忽略三个较高有效字节.