Delphi 7 中的二进制到十进制
Binary to Decimal in Delphi 7
我想做一个简单的控制台程序,用户输入一个二进制字符串,他得到一个十进制数。我不需要检查二进制字符串是否有除 0 或 1 之外的其他内容。我已经设法将十进制转换为二进制,但不能以其他方式进行。
我尝试了一些在 SO 和 Reddit 上找到的代码,但大多数时候我得到错误 I/O 105
这是 bin 的 dec :
program dectobin;
{$APPTYPE CONSOLE}
uses
SysUtils,
Crt32;
var
d,a :Integer;
str :String;
begin
str:='';
Readln(a);
while a>0 do begin
d:=a mod 2;
str:=concat(IntToStr(d),str);
a:=a div 2;
end;
Writeln(str);
Readln;
end.```
位置编号系统 (PNS) 的基础知识
- PNS 中唯一数字的个数是其基数(或基数)
- 十进制(基数=10)有十位数字,0..9
- 二进制(基数=2)有两位,0..1
- 数字在数字中的位置决定了它的权重:
- 最右边的数字的权重为单位(1),(base)^0 (十进制1,二进制1)
- 第二个(右起)数字的权重为(基数)^1(十进制 10,二进制 2)
- 第三个(右起)数字的权重为(基数)^2(十进制 100,二进制 4)
- 等等....
注意权重总是base * weight of previous digit
(从右到左的方向)
任何位置数字系统中一串数字的一般解释
assign a variable 'result' = 0
assign a variable 'weight' = 1 (for (base)^0 )
repeat
read the rightmost (not yet read) digit from string
convert digit from character to integer
multiply it by weight and add to variable 'result'
multiply weight by base in prep. for next digit
until no more digits
在上一个之后,您可以使用例如IntToStr()
转换为十进制字符串。
我想做一个简单的控制台程序,用户输入一个二进制字符串,他得到一个十进制数。我不需要检查二进制字符串是否有除 0 或 1 之外的其他内容。我已经设法将十进制转换为二进制,但不能以其他方式进行。
我尝试了一些在 SO 和 Reddit 上找到的代码,但大多数时候我得到错误 I/O 105
这是 bin 的 dec :
program dectobin;
{$APPTYPE CONSOLE}
uses
SysUtils,
Crt32;
var
d,a :Integer;
str :String;
begin
str:='';
Readln(a);
while a>0 do begin
d:=a mod 2;
str:=concat(IntToStr(d),str);
a:=a div 2;
end;
Writeln(str);
Readln;
end.```
位置编号系统 (PNS) 的基础知识
- PNS 中唯一数字的个数是其基数(或基数)
- 十进制(基数=10)有十位数字,0..9
- 二进制(基数=2)有两位,0..1
- 数字在数字中的位置决定了它的权重:
- 最右边的数字的权重为单位(1),(base)^0 (十进制1,二进制1)
- 第二个(右起)数字的权重为(基数)^1(十进制 10,二进制 2)
- 第三个(右起)数字的权重为(基数)^2(十进制 100,二进制 4)
- 等等....
注意权重总是base * weight of previous digit
(从右到左的方向)
任何位置数字系统中一串数字的一般解释
assign a variable 'result' = 0
assign a variable 'weight' = 1 (for (base)^0 )
repeat
read the rightmost (not yet read) digit from string
convert digit from character to integer
multiply it by weight and add to variable 'result'
multiply weight by base in prep. for next digit
until no more digits
在上一个之后,您可以使用例如IntToStr()
转换为十进制字符串。