定义两个byte:a=50, b=100, a-b=206谁能告诉我为什么?(100)

  • 主题发起人 主题发起人 741025
  • 开始时间 开始时间
7

741025

Unregistered / Unconfirmed
GUEST, unregistred user!
定义两个byte:a=50, b=100, a-b=206谁能告诉我为什么?
 
你想要什么结果呢?Byte型可以这样计算吗?
 
是的,这是delphi7程序运行的结果
 
我估计是这样的:Byte的范围是0~255,即256个数,你的运算为负数,所以Delphi自动把结果加上了256,这是一种转换吧,应为Byte不允许有负数
 
所以如果2个byte型的变量,如果它们的差为负数,则实际结果将为256+Result如LZ的情况:实际结果就是256+(-50)=206;个人浅见,希望大家斧正。
 
在深入一下,如果2个Byte的和大于256,则实际结果也会被减去256如用200+100,实际结果应该是44
 
楼上正解
 
还有没有更好的解释?[:)]
 
我觉得这就是一种校验,Byte型的范围是0~255,那么无论是定义还是计算都必须在这个范围里,超出范围,要么报错(比如你定义 a := 895,我没试过),要么D自动处理
 
50-100=-50-50的补码对于byte型来说就是206
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
835
SUNSTONE的Delphi笔记
S
S
回复
0
查看
765
SUNSTONE的Delphi笔记
S
后退
顶部