2進数で計算するには?

解決


MK  2005-04-26 02:18:25  No: 89576

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

A=11010
B=10001
Z=A Or B

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


まさお  2005-04-26 02:36:04  No: 89577

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

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

とするのは如何。

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


LESIA  2005-04-26 02:36:50  No: 89578

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


ガッ  2005-04-26 02:41:01  No: 89579

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

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


まさお  2005-04-26 02:46:33  No: 89580

失礼しました。

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


MK  2005-04-26 02:59:02  No: 89581

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

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

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


ガッ  2005-04-26 03:27:13  No: 89582

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

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


MK  2005-04-27 06:47:18  No: 89583

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加