トップページ⇒tech
33コメント10KB

n進数の論理演算

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/06/26(火) 03:36:58
2進数だけじゃなくて一般的なn進数の論理演算を考えてみようよ
0002デフォルトの名無しさん2007/06/26(火) 03:37:31
2進数でいうAND的なの

MINOR(入力の小さい方を出力)
  │0 1 2 … n
─┼───────
0 │0 0 0    0
1 |0 1 1    1
2 |0 1 2    2
.: |
n |0 1 2    n

2進数でいうOR的なの

MAJOR(入力の大きい方を出力)
  │0 1 2 … n
─┼───────
0 │0 1 2    n
1 |1 1 2    n
2 |2 2 2    n
.: |
n |n n n    n
0003デフォルトの名無しさん2007/06/26(火) 03:37:56
2進数でいうXOR的なの

DIFF(入力の差を出力)
  │0 1 2 … n
─┼───────
0 │0 1 2    n
1 |1 0 1    n-1
2 |2 1 0    n-2
.: |
n |n n-1 n-2  0


2進数でいうNOT的なの

INVERSE(nと入力の差を出力)
─┼─
0 │n
1 |n−1
2 |n−2
.: |
n |0
0004デフォルトの名無しさん2007/06/26(火) 03:38:26
その他、ないと困りそうなの

ADD(入力の和を出力、ただし最大n)
  │0 1 2 … n
─┼───────
0 │0 1 2    n
1 |1 2 3    n
2 |2 3 4    n
.: |
n |n n n    n

UPPER(入力があればnを出力)
─┼──
0 │0
1 |n
2 |n
.: |
n |n
0005デフォルトの名無しさん2007/06/26(火) 03:38:53
nが2以上の整数の場合の論理演算を考えてみた
ちゃんと確認してないけど加算器くらいは作れそうな感じ
0006デフォルトの名無しさん2007/06/26(火) 04:55:19
和の1桁目を出力
積の1桁目を出力

あたりは欲しいかもしれん。
0007デフォルトの名無しさん2007/06/26(火) 07:44:08
ファジー論理もどきか
0008デフォルトの名無しさん2007/06/26(火) 12:45:49
-1, 0, 1 の三進数は発展性あるかも
0009デフォルトの名無しさん2007/06/26(火) 13:05:04
とりあえずn進数なら0〜(n-1)までだろ。
0010デフォルトの名無しさん2007/06/26(火) 13:06:13
つ[平衡三進法]
0011デフォルトの名無しさん2007/06/26(火) 13:28:36
カウンタ作ってみた

       ┌──┐      ┌───┐
clk ───┤ADD ├────┤MINOR├─ Output
Input ─┬┤   |   ┌─┤     |
     │└──┘   |  └───┘
     │┌─-┬─-┐|┌─-┐   ┌───┐
     └┤INV|UP ├┴┤INV├──┤MINOR├─ CF
       └─-┴─-┘  └─-┘┌─┤     |
                    1─┘ └───┘

Inputの初期値は0とする
clkを1にするとOutputが+1される
 Outputはそのまま次のInputへ
CF(キャリーフラグ)は次の桁のclkへ


MINORの片方を 0, n にすると
2進ANDと同じように使える

MINOR(X,0)=0 AND(X,0)=0  強制的に0設定
MINOR(X,n)=X AND(X,1)=X  Xを取り出す
0012デフォルトの名無しさん2007/06/26(火) 13:32:09
一応真理値表
  |O C
─┼───
0 │1 0
1 |2 0
2 |3 0
.: |
n-1|.n 0
n |0 1
0013デフォルトの名無しさん2007/06/26(火) 15:05:50
こういう論理ゲートって電子部品として商品化されてたりしないの?
0014デフォルトの名無しさん2007/06/26(火) 18:08:14
>>4
オーバーフローするADDとか
n以外は0を返すLOWERとかも必要だろう
0015デフォルトの名無しさん2007/06/26(火) 18:15:56
LOWER(入力がnでなければ0を出力)
─┼──
0 │0
1 |0
2 |0
.: |
n |n


INVERSE→UPPER→INVERSE でも同じだけど
いろいろ使えそうだし簡略化した方が楽だな
0016デフォルトの名無しさん2007/06/26(火) 20:16:41
>>13
誰がこんなもん欲しがるの?
0017デフォルトの名無しさん2007/06/27(水) 01:07:14
そもそも論理値ってのは真か偽しか値を取らないから意味があるんじゃないのか?
0018デフォルトの名無しさん2007/06/27(水) 05:31:08
不定値というのも欲しい
って思ったけどそれって高級言語レベルの話ですねすいませぬ
0019デフォルトの名無しさん2007/06/27(水) 11:42:15
10進コンピューター
http://pc.2ch.net/tech/kako/1016/10163/1016362068.html
0020デフォルトの名無しさん2007/06/27(水) 12:57:52
3値論理 - Wikipedia
http://ja.wikipedia.org/wiki/3%E5%80%A4%E8%AB%96%E7%90%86

真(true)、偽(false)、不明(unknown)

OR
  │T U F
─┼────
T |T T T
U |T U U
F |T U F

AND
  │T U F
─┼────
T |T U F
U |U U F
F |F F F

NOT
─┼─
T |F
U |U
F |T


論理値の表示法の例
・1=真、2=偽とし、0 は 不明(unknown)や不適切(irrelevant)
・0=偽、1=真、第三の値(# や 1/2)
・-1=偽、1=真、0=第三の値
0021デフォルトの名無しさん2007/06/27(水) 13:01:40
>>18
不定値ってのが単に定義の問題なら>>17みたいに
「この値を不定値とする」ってことで済むけど、
本当に取り出してみるまで値が不定なのが欲しかったら
量子bitの世界になっちゃう気がする
0022デフォルトの名無しさん2007/06/27(水) 13:21:31
不定値っつーと、普通は boost::tribool みたいなのを想定してると思うんだけど。
0023デフォルトの名無しさん2007/06/27(水) 16:53:46
>>22
多値論理∋3値論理
0024デフォルトの名無しさん2007/06/27(水) 16:55:52
量子論理≠多値論理
0025デフォルトの名無しさん2007/06/27(水) 17:02:18
Mr.論理
0026デフォルトの名無しさん2007/06/27(水) 22:22:39
本物の不定な値を利用するのってファジー(笑)とか乱数生成ぐらいしか思いつかないんですが、
他の用途ってなんかあります?
0027デフォルトの名無しさん2007/06/27(水) 22:26:02
論理ー 論理ー 論理ー 論理
論理ー 論理ー 論理ー 論理ー
あぶない 論理だー
0028デフォルトの名無しさん2007/06/27(水) 23:09:39
ふてえ野郎だぜ
0029デフォルトの名無しさん2007/07/01(日) 16:27:41
>>9
わろす
0030デフォルトの名無しさん2007/07/02(月) 19:55:28
オセロの黒=2、白=0、石無し=1の3進で盤面を64bitで表すと
いろんな処理が簡単になるぽい

以下、単純のため盤面は8bitで

●石の有無のチェック
12001201 ←盤面
00002000 ←置く場所のbitだけ立てる

差(12001201, 11111111)=01110110
  盤面とALL1の差を取ると石のある場所だけ1になる
小(01110110, 00002000)=00000000
  それと置く場所との小さい方を取る
   ・石のない場所に置こうとするとALL0
   ・石のある場所に置こうとするとNOT-ALL0
ゼロ比較で条件分岐

→3クロック
0031デフォルトの名無しさん2007/07/02(月) 19:57:03
●反転チェック
とりあえず面倒そうだから省略


●石の反転
12001201 ←盤面
00220000 ←ひっくり返せる場所のbitだけ立てる

差(12001201, 00220000)=12221201
  返せる白を黒に、他はそのまま
大(12221201, 00002000)=12222201
  さらに置く場所のbitを立てれば盤面が更新

→2クロック


アルゴリズムを変えなくても
単純な処理の部分で高速化できれば
ちょっとは強くなりそうだよね
0032デフォルトの名無しさん2007/07/02(月) 20:00:06
ついでに、処理の最初にALL2で反転させれば
黒番と白番の処理はまったく同じにできるぽい

12001201 ←盤面
 ↓差(盤面, ALL2)
10221021
0033デフォルトの名無しさん2007/07/05(木) 12:16:22
同じクロックならともかく現実的ではないな
■ このスレッドは過去ログ倉庫に格納されています