delphixe 2进制负数转10进制
时间: 2023-08-02 18:05:02 浏览: 97
Delphi中可以使用 `StrToInt` 函数将二进制字符串转换为十进制整数。但需要注意的是,如果输入的二进制字符串表示的是负数,那么需要先将其转换为补码表示法,然后再转换为十进制。
下面是一个将二进制负数转换为十进制的 Delphi 函数示例:
```delphi
function BinToDec(const Bin: string): Integer;
var
i, n, sign: Integer;
begin
n := Length(Bin);
if (n < 2) or (Bin[1] <> '-') then // 检查输入是否合法
raise Exception.Create('Invalid input.');
// 将二进制字符串转换为整数
Result := 0;
for i := 2 to n do begin
if Bin[i] = '1' then
Result := Result or (1 shl (n - i));
end;
// 判断符号位
sign := -1;
if Bin[2] = '0' then
sign := 1;
// 如果是负数,将其转换为补码
if sign = -1 then
Result := Result - (1 shl (n - 2));
// 返回结果
Result := Result * sign;
end;
```
使用示例:
```delphi
var
BinStr: string;
DecNum: Integer;
begin
BinStr := '-1011';
DecNum := BinToDec(BinStr);
ShowMessageFmt('%s = %d', [BinStr, DecNum]); // 显示:-1011 = -11
end;
```
阅读全文