You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi中Integer转Byte类型(负数转换)问题咨询

Integer转Byte时的数值差异解析

你测试的代码如下:

var
   B: Byte;
   I: Integer;
begin
   I := -10;
   B := I;
end;

出现这种结果的核心原因是计算机中整数以补码形式存储和运算,具体拆解:

  • 32位Integer类型的-10,在内存中存储的是它的补码:11111111 11111111 11111111 11110110
  • 当赋值给Byte类型时,只会截取这个二进制数的低8位,也就是11110110
  • Byte是无符号8位类型,直接将这8位二进制转换为十进制:128+64+32+16+4+2 = 246,也就是你看到的256-10的结果

你预期的10是-10原码的低8位,但计算机处理负数时用的是补码,所以转换后得到的是补码对应的无符号值,而非原码的低字节数值。

内容的提问来源于stack exchange,提问作者DevSergo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 04:10:27