Binary 我不知道';我不懂十进制到二进制的代码

Binary 我不知道';我不懂十进制到二进制的代码,binary,decimal,pascal,freepascal,Binary,Decimal,Pascal,Freepascal,十进制45是二进制的101101,当我必须解释代码时,我得到1011001,但程序输出正确的答案。在2 mod 2=0之后,这个0到哪里去1011001 如果我输入45作为十进制数,我遵循程序中的步骤: 45模2=1,x=“1” “+”1“=“1” 45第2部分=22 22模2=1,x=“0” “1”+“0”=“10” 22第2部分=11 11模2=1,x=“1” “10”+“1”=“101” 11第2部分=5 5模2=1,x=“1” “101”+“1”=“1011” 5第2部分=4 4模2=

十进制45是二进制的101101,当我必须解释代码时,我得到1011001,但程序输出正确的答案。在2 mod 2=0之后,这个0到哪里去1011001

如果我输入45作为十进制数,我遵循程序中的步骤:

  • 45模2=1,x=“1”
  • “+”1“=“1”
  • 45第2部分=22
  • 22模2=1,x=“0”
  • “1”+“0”=“10”
  • 22第2部分=11
  • 11模2=1,x=“1”
  • “10”+“1”=“101”
  • 11第2部分=5
  • 5模2=1,x=“1”
  • “101”+“1”=“1011”
  • 5第2部分=4
  • 4模2=0,x=“0”
  • “1011”+“0”=“10110”
  • 4第2部分=2
  • 2模2=0,x=“0”
  • “10110”+“0”=“101100”
  • 2分2=1
  • 1模2=1,x=“1”
  • “101100”+“1”=“1011001”
  • 1第2部分=0
  • 节目结束
它怎么还能输出101101

    write('Enter decimal number: ');
    readln(dec);
    repeat 
    if (dec mod 2 = 0) then x:= '0' 
    else x:= '1'; 
    bin:= bin + x; 
    dec:= dec div 2;
    until dec= 0; 
    writeln(bin);
查看这一行:

5 div 2 = 4
它等于2,而不是4

这里还有一个输入错误:

22 mod 2 = 1, x = "0"