challenge 2進数の記述

 コンピューターの原理は2進数だというのに、多くのプログラミング言語で8進数や16進数しか記述できないのは少し変だとは思いませんか?
 そこで、ソース中に2進数を定数として書く方法、またはその代替手段を考えてください。

ある程度の評価基準を示します(できるところまでで構いません)。
・2進数の表示方法は0と1
・桁数は可変長
・コンパイル等の後に最適化等によって定数に変換されることが見込まれる

Cで関数として実装したものを示しておきます。
1
2
3
4
5
int bin(int b1, int b2, int b3, int b4, int b5, int b6, int b7, int b8){
    return b1<<7 | b2 <<6 | b3<<5 | b4<<4 | b5<<3 | b6<<2 | b7<<1 | b8;
}

int byte = bin(0, 1, 1, 0, 1, 0, 0, 1);

Posted feedbacks - Python

リテラルとしての2進数表現は現在ありませんが、以下のように書く事ができます。
(Python3.0では二進数表記も使えます)
1
2
3
4
5
6
i = int('01101001', 2) # 105

# 0,1以外はエラー
i = int('11111112', 2) # ValueError: invalid literal for int() with base 2: '1112'

i = 0b01101001 # python3.0

1
2
3
bin = lambda *a: sum([1 << i for i, j in enumerate(reversed(a)) if j])

bin(0,1,1,0,1,0,0,1)

Index

Feed

Other

Link

Pathtraq

loading...