📓 Archive

BC

FGJ: Create:2024/05/15 Update: (2024-10-24)

  • Intro(bc) #

    • 保留位数 #

      echo 'scale=3; 10 / 3' | bc
      echo 'scale=5; 820 / (480 + 90)' | bc

    • 进制转换 #

      Caution

      1).: 特别需要注意 ibase,obase,以及值之间的联系,不然会出现意想不到的结果。如下图: 参见
      简而言之,就是在进制转换的时候,不管ibaseobase哪一个在前,都要以前面使用的进制为主,对后面的值以前面的进制进行转换。举例如下:
      在2到八进制中,可以写成ibase=2;obase=1000;,或者obase=8;ibase=2;,对于第一个,(2,1000),1000 为二进制的值 8,第二个(8,2),2 为八进制中的值 2

      2).: 十六进制中的字母需要大写。小写就是: (standard_in) 1: syntax error

      二进制-八进制
      echo 'ibase=2;obase=1000; 11010111' | bc ,output: 327
      echo 'obase=8;ibase=2; 11010111' | bc ,output: 327

      二进制-十进制
      echo 'ibase=2;obase=1010; 11010111' | bc ,output: 215
      echo 'obase=10;ibase=2; 11010111' | bc ,output: 215

      二进制-十六进制
      echo 'ibase=2;obase=10000; 11010111' | bc ,output: D7
      echo 'obase=16;ibase=2; 11010111' | bc ,output: D7

      八进制-二进制
      echo 'ibase=8;obase=2; 327' | bc ,output: 11010111

      八进制-十进制
      echo 'ibase=8;obase=12; 327' | bc ,output: 215

      八进制-十六进制
      echo 'ibase=8;obase=20; 327' | bc ,output: D7

      十六进制-二进制
      echo 'ibase=16;obase=2; D7' | bc ,output: 11010111

      十六进制-八进制
      echo 'ibase=16;obase=8; D7' | bc ,output: 327

      十六进制-十进制
      echo 'ibase=16;obase=A; D7' | bc ,output: 215

  • Reference #


comments powered by Disqus