• ベストアンサー

下記の動作をなるべく少ない論理演算でやりたい

入力(0か1)はabcdefthの8つで、1の場所を右にソートして入力と同じ形で出力したいんです 論理演算はNOT、AND、OR、XORしか使えず新しい変数は1bitのみしか使えません abcdefth 00000000 → 00000000 00000010 → 00000001 00001010 → 00000011 01100111 → 00011111 11111110 → 01111111 できれば40回未満程度でやりたいのですが、うまい方法は無いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

まず確認なのですが ・ 論理演算は a AND b のように a~h (+新規t) を変数として1bitずつ行うものですか? ・演算結果を入れる場所は? a ← a AND b のように、演算に使用した変数に結果を代入することは可能ですか? ・制御構造(IF, GOTO等)は無いのですね? 上記の条件だとすると ab 2bitのソートを考えると 入力|出力 ab|ab 00|00 01|01 10|01 11|11 で 出力a = a AND b 出力b= a OR b a= a AND b で aが破壊されてしまうので、別変数tに退避させると t=a a= a AND b b = t OR b となります。 この一連の動きを SORT2(a,b) とすると、 abcの並び変えは SORT2(a,b) SORT2(b,c) SORT2(a,b) となります。バブルソートのアルゴリズムです。 他のアルゴリズムだと状態の記憶やフローの制御が必要になってくるので、無理あるいは非効率だと思われます。

at_key
質問者

お礼

すみません! まだ不十分でした。abcdefghの内容でIFは出来ません それと、abcdefghが関われない変数ならint型でもなんでも作れて普通に演算、分岐が可能でした ややこしいですね・・すみません。 ヒントを頂けたので自分で頑張ってみます。 ありがとうございました

at_key
質問者

補足

すみません。IF、GOTOは可能でした。 他はおっしゃるとおりです。 するとその方法の8桁は28*3で論理演算84回でしょうか ううん、もっと直接的な方法はありませんでしょうか?

関連するQ&A

  • 論理演算子について

    論理演算子には Not And Or Xor Eqv Imp があるようですがNot・And・Orしか理解できませんでした。 Excel VBA ベーシックを受ける際は、上記しか理解してないままでも大丈夫ですか? しっかり勉強してすべて覚えるべきでしょうか?

  • 論理演算について

    次の表(真理値表と言う)と等価な論理演算(AND,OR,NOTで表現) を求めてください。    入力A 入力B 出力C     1   1    0     1   0    0     0   1    1     0   0    0 という問題なのですが、どのように答えたら(NOT、AND、ORで表現するってゆー意味がわからないんです)よいのかよくわからないのです。 今日提出課題なので急いでいます。 どなたか教えてください。よろしくお願いします。

  • 【論理演算子?】AND、OR、XORは知っています

    【論理演算子?】AND、OR、XORは知っていますがNADって何ですか?

  • 論理演算について教えて下さい。

    基本的な論理演算について教えて下さい。 例えば、変数aにTrueを、変数bにNullを代入し、 a and b をした場合、Nullになるのは、わかるんですが、 a or b をした場合、なんでTrueになるんですか? 又、変数aにFalseを、変数bにNullを代入し、 a or b をした場合、Nullになるのは、わかるんですが、 a and b をした場合、なんでFalseになるんですか? お願いです。教えて下さい。。。 理由がわかりません。。。。

  • 論理演算について

    まず最初に。 (1)AND......論理積 (2)OR.........論理和 (3)XOR......排他論理和 (4)NOT......論理否定 (5)NAND...否定論理積?論理否定積? (6)NOR......否定論理和?論理否定和? (7)XNOR...否定排他論理和?排他論理否定和? コンピュータの一般に NAND、NOR、XNOR は NOT と組み合わせますから Windows 電卓などでも ボタンがありませんよね。でも、電子、電気関係ではゲート IC であります。 そこで質問です。 上記の(5)~(7)の場合は、なんと日本語で呼ぶべきか教えて頂きたいのです。 よろしくお願いします。

  • 4入力XORの論理式

    4入力XOR A【XOR】B【XOR】C【XOR】D この式のカルノー図を描くと 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 というように0と1が並びます。 これを簡単化出来るのなら なるべく簡単化して、XORを使わない 論理式を出したいのですがどうすればいいですか? そのあと、74シリーズのIC(OR、AND、NOT、NANDだけ) をつかって実体回路図を描くので論理式は出来るだけ 簡単にお願いします。

  • 論理演算子について

    初歩的な質問だと思いますが・・・ 論理演算子の&はなんのためにあるのでしょうか? &&だけで十分な気がします。 &の右の条件が正しく動いているのかを確認するためだけのものでしょうか? 一応ですが&と&&の動作の違いはわかっていますので

  • SQL文について(ANDとORの論理演算について)

    下記の質問についてご教授お願い致します [設問] 国語と数学の試験を実施し、2教科の成績は氏名とともに、得点表に記録されている。 1教科は平均点以上で、残りの1教科は平均点未満の生徒氏名を表から抽出するSQLはどれか。 A:国語の点数が国語の平均点以上 B:数学の点数が数学の平均点以上 とするときに、SQL文は SELECT 生徒氏名 FROM 得点 WHERE (A OR B) AND NOT (A AND B) となります。 このときに、 WHERE (A OR B) AND NOT (A AND B) ここの論理演算を理解することが難しいです。 論理演算を分解すると A OR B 国語または数学が平均点以上であるケース NOT (A AND B) 国語と数学の両方が平均点以上であるケース となり、この両者をANDで取ると 1教科は平均点以上で、残りの1教科は平均点未満になることになります。 この論理演算でどうしてもこのような結果を引き出すことができません。 お手数ですがご教授お願いいたします。

  • 論理式の簡略化

    論理式を簡略化する問題なのですがよくわからないので 教えて頂きたいです。 式は(B eqv A) xor B and A です。 まず公式で A eqv B=notA xor B=A xor notBなので (notB xor A) xor B and A=(A xor notB) xor B and A「xorの交換則」             =A xor notB xor B and A「xorの結合則」 =A xor True and A             =A xor A=False となったのですがA eqv BをB xor not Aにすると (B xor notA) xor B and A=(not A xor B) xor B and A             =not A xor B xor B and A             =not A xor F and A             =not A xor F             =not A となってしまい答えが違ってしまいます。 やはり計算順序がおかしいのでしょうか? 回答お願いします<(_ _)>

  • 論理演算 NOT(0101 0101)

    こんにちは、コンピュータの論理演算の勉強をしています。以下も問題に対する答えはあっていますでしょうか? 1.NOT(01010101)=10101010   2進数 2.{(7B7C) Or (6C96)}= ??   16進数 ご存知の方がいましたら教えてください。

専門家に質問してみよう