Comment detail
LL Golf Hole 6 - 10進数を2進数に基数変換する (Nested Flatten)楽をするならこんなのはどうでしょう。
e.g.
$ echo "obase=2; 255" | bc
11111111
# AIX 4.3.3.0, HP-UX B.11.00, Linux 2.4.2, SunOS 5.5.1で動作を確認。
どのシステムでも動くようにするなら、Bourne shellで愚直に。
e.g.
$ dec2bin() {
d=$1
t=''
[ $# -eq 0 ] && return 1
while [ $d -gt 0 ]; do
r=`expr $d % 2`
d=`expr $d / 2`
t="$r$t"
done
echo "${t:=0}"
return 0
} && dec2bin 255
# AIX 4.3.3.0, HP-UX B.11.00, Linux 2.4.2, SunOS 5.5.1で動作を確認。
なるほど。
で、POSIX Shell規格でしたらexprを呼ばずにいけるので、ちょっとだけ改造してみました。
1 2 3 4 5 | d=$1
while [ $d -gt 0 ];do
echo -n $(($d%2))
d=$(($d/2))
done
|
間違い、桁が逆でした。
1 2 3 4 5 6 | d=$1
while [ $d != 0 ];do
t=$(($d%2))$t
d=$(($d/2))
done
echo $t
|





emasaka #7225() [ Bash ] Rating0/0=0.00
pure bash。引数。2進数のみ。
bashのprintfだと%bが使えないようなので、8進数経由で。
Rating0/0=0.00-0+
1 reply [ reply ]