2進数で計算するには?

解決


MK  2005-04-25 17:18:25  No: 89576  IP: [192.*.*.*]

2進数で入力を受け付けて、論理演算を行い、2進数で表示したいのですが、一文字ごとに演算するしか方法はないのでしょうか?

A=11010
B=10001
Z=A Or B

上記の結果が Z=11011 になるようにしたいのですが。
(入力は300文字くらいになると思います。)

編集 削除
まさお  2005-04-25 17:36:04  No: 89577  IP: [192.*.*.*]

2進を10進に、10進を2進に変換する関数を作って

A=十進化("11010")
B=十進化("10001")
Z=二進化(A Or B)

とするのは如何。

二進化,十進化コードはネット検索すれば見つかると思います。

編集 削除
LESIA  2005-04-25 17:36:50  No: 89578  IP: [192.*.*.*]

300文字もあるなら、一文字ごとに演算するしかないでしょうね。

編集 削除
ガッ  2005-04-25 17:41:01  No: 89579  IP: [192.*.*.*]

んー、別に文字列じゃなくても出来ますが、
巨体整数演算(か巨体浮動小数点演算)が必要になると思います。
…なので、素直に文字列でやったほうがいいかと。

※入力が(二進の整数で)300桁となると、
  2^300=10^mとしてm=log2(2^300)/log2(10)〜130
  …130桁の10進ねぇ…
  RSA暗号とかですかね?

編集 削除
まさお  2005-04-25 17:46:33  No: 89580  IP: [192.*.*.*]

失礼しました。

2 ^ 300 = 2.03703597633449E+90 なのですネ。

編集 削除
MK  2005-04-25 17:59:02  No: 89581  IP: [192.*.*.*]

まさおさん、LESIAさん、 ガッさん、ありがとうございます。

将来的にテキストファイルから複数データを読み込んで
演算を行いたいので、文字列で1文字ずつ演算すると時間がかかって
しまうと思うのです。

暗号関係ではありません、2進数勉強中です。

編集 削除
ガッ  2005-04-25 18:27:13  No: 89582  IP: [192.*.*.*]

> 文字列で1文字ずつ演算すると時間がかかってしまうと思うのです。
そのうち気が付くと思いますが、何も文字列でやる必要はありません。
Cなどのように文字の列として扱う(配列として扱う)と言う風にすれば、
結構高速でしょう…多分。
…まぁ、それ以上高速化しようとすれば、
巨体数演算装置を作らないといけませんが(orz

※でも…二進数の勉強でなぜ300桁という「半端」な大きさが…??
  ま、色々あるでしょうが頑張ってください。

編集 削除
MK  2005-04-26 21:47:18  No: 89583  IP: [192.*.*.*]

配列でやることにしました。

いろいろ、ありがとうございました。

編集 削除