我不理解十进制到二进制代码

时间:2014-05-01 13:12:37

标签: binary decimal pascal freepascal

十进制45是二进制的101101,当我必须解释我得到的代码1011001,但程序输出正确的答案。在2 mod 2 = 0?

之后,这个0到10110 0 1

如果我输入45作为十进制数字,我按照程序中的步骤操作:

  • 45 mod 2 = 1,x =“1”
  • “”+“1”=“1”
  • 45 div 2 = 22
  • 22 mod 2 = 1,x =“0”
  • “1”+“0”=“10”
  • 22 div 2 = 11
  • 11 mod 2 = 1,x =“1”
  • “10”+“1”=“101”
  • 11 div 2 = 5
  • 5 mod 2 = 1,x =“1”
  • “101”+“1”=“1011”
  • 5 div 2 = 4
  • 4 mod 2 = 0,x =“0”
  • “1011”+“0”=“10110”
  • 4 div 2 = 2
  • 2 mod 2 = 0,x =“0”
  • “10110”+“0”=“101100”
  • 2 div 2 = 1
  • 1 mod 2 = 1,x =“1”
  • “101100”+“1”=“1011001”
  • 1 div 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);

1 个答案:

答案 0 :(得分:1)

查看此行:

5 div 2 = 4

它等于2,而不是4。

你这里也有一个错字:

22 mod 2 = 1, x = "0"