![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
2つ数値の差を絶対値で求める適切な計算法を探しています.
2つの候補の内,回路の大きさが小さくなりそうな方はどちらですか?
また,絶対値を求める他の方法があったら教えてください。
<候補1>
X(絶対値)a1,a2(データ)
if(a1 < a2) X <= a2 - a1;
elsif (a2 > a1 ) X <= a1 -a2;
else X <= 0
<候補2>
df(N+1) 絶対値 X をビットで表現したときの最上位ビット
X <= a1-a2
X <= ( df(N+1) xor df(N) ) &
( df(N+1) xor df(N-1) ) &
( df(N+1) xor df(N-2) ) &
・・・・・・・
( df(N+1) xor df(2) ) &
( df(N+1) xor df(1) ) &
( df(N+1) xor df(0) ) + ("000000000" & df(N+1));
No.3ベストアンサー
- 回答日時:
考え方は<候補1>、回答のような1ビット演算回路をならべると、回路図が見やすそうで、規模も小さくなりそうだな、と思ったので。
<候補1>だと Nビット比較器とNビットセレクタとNビット減算器が必要な感じに見えたので、それだと無駄な配線が多くなりそうな感じがしたもので。
最近の論理合成プログラムはよくできてるそうで、プログラムのような感覚で設計できるとか。そんな環境なら、私の書いた方法はあまりやくにたたないかもしれません。
No.2
- 回答日時:
ハードはそんなに詳しくはないのですが
絶対値の演算を論理回路を組み合わせてやりたい、ということでよろしいですか?
&,(N)は
a1: a1(N) & a1(N-1) & ...& a1(1) & a1(0)
a2: a2(N) & a2(N-1) & ...& a2(1) & a2(0)
のような構成の意味でしょうか。
入力a1(i),a2(i),cmp(i+1),sel(i+1),Carry(i-1)
出力cmp(i),sel(i),df(i),Carry(i)
cmp(i+1) =False なら
cmp(i)<= (a1(i) ≠ a2(i))
sel(i)<= (a1(i) > a2(i))
cmp(i+1) =Trueなら
cmp(i)<=cmp(i+1)
sel(i)<=sel(i+1)
出力は
sel(i) =True なら df(i),Carry(i)<=a1(i) - a2(i) -Carry(i-1)
sel(i) =False なら df(i),Carry(i)<=a2(i) - a1(i) -Carry(i-1)
のような回路をビット数並べるといい気がします。
この回答への補足
<絶対値の演算を論理回路を組み合わせてやりたい、ということでよろしいですか?
絶対値演算を論理式で記述するか,セレクタ(if文)を用いた記述するか どちらがシステム的に優れているかということです。
↓2の補数を求めています。
最上位ビットが1なら符号を反転,最後に1を足す.
X <= ( df(N+1) xor df(N) ) &
( df(N+1) xor df(N-1) ) &
( df(N+1) xor df(N-2) ) &
・・・・・・・
( df(N+1) xor df(2) ) &
( df(N+1) xor df(1) ) &
( df(N+1) xor df(0) ) + ("000000000" & df(N+1));
お答えありがとうございます
この部分で if文を論理演算を表し,{ if(a1 < a2), else }
cmp(i+1) =False なら
cmp(i)<= (a1(i) ≠ a2(i))
sel(i)<= (a1(i) > a2(i))
cmp(i+1) =Trueなら
cmp(i)<=cmp(i+1)
sel(i)<=sel(i+1)
この部分で,if文の中身の計算ですね。
sel(i) =True なら df(i),Carry(i)<=a1(i) - a2(i) -Carry(i-1)
sel(i) =False なら df(i),Carry(i)<=a2(i) - a1(i) -Carry(i-1)
この方法は<候補1>と同じような気がします、、
No.1
- 回答日時:
「回路の大きさが小さくなりそうな方」
回路が何を指しているのか判りませんが、1点だけ。
候補1の最後のelseは要りますか?
if(a1 < a2) X <= a2 - a1;
elsif (a1 > a2) X <= a1 -a2; ←ここの間違いは修正。
else X <= 0 ←ここ
a1 < a2 じゃ無かったら、
a1 > a2 又は a1 = a2
だけど、0を代入するなら、
a1 - a2
も、0になるんじゃないの?
回答ありがとうございます
ご指摘のとおり0の代入も必要なさそうですね
if(a1 < a2) X <= a2 - a1;
else X <= a1 -a2
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- バスケットボール バスケの質問です。基本は、2ー3ゾーンDFなのですが特定の一人に対してのみ、ずーとついてるDF戦略は 1 2022/10/18 16:03
- 数学 【全微分について】 z=f(x,y) の全微分は df=(∂f/∂x)dx+(∂f/∂y)dy と表 1 2023/02/25 05:49
- 数学 微分の表し方について質問です f(x,y)の点(a,b)におけるv↑方向の方向微分 (x(t),y( 3 2023/02/20 09:41
- 統計学 t値の計算方法 1 2022/11/29 18:37
- 戦争・テロ・デモ 中国のDF-26やDF-21Dといったミサイルがある中で、台湾有事の際に米海軍は? 4 2023/03/14 10:35
- サッカー・フットサル サッカー日本代表がセリエAやリーガエスパニョーラやプレミアリーグに参戦したら何位くらいですか? 2 2023/05/16 22:22
- 数学 中学2年生の数学の問題で、わからないものがあるので教えていただきたいです。 折り目を作ったことで出来 4 2023/01/29 16:07
- スピーカー・コンポ・ステレオ スピーカーのDFについて教えてください。 4 2023/07/15 00:12
- 数学 全微分について質問です。 z=f(x,y)のとき df=(∂f/∂x)dx+(∂f/∂y)dy ∂f 5 2023/02/24 05:46
- 工学 周波数fで表現したフーリエ変換の対称性に関する質問です。 1 2022/09/14 12:27
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
えエクセルで○は1とし△は0.5で...
-
Excel 英大文字小文字を区別せ...
-
以下の条件に合う関数を教えて...
-
EXCELで2つの数値のうち大きい...
-
Excelで隣のセルと同じ内容に列...
-
エクセルで二つの数字の小さい...
-
エクセルで時刻(8:00~20:00)...
-
エクセルのオートフィルタで最...
-
PowerPointで表の1つの列だけ...
-
エクセルで、2種類のデータを...
-
エクセルでオートフィルタのボ...
-
エクセルで最初のスペースまで...
-
Excelで半角の文字を含むセルを...
-
エクセルで特定の文字が入って...
-
2つのエクセルのデータを同じよ...
-
EXCELで 一桁の数値を二桁に
-
文字列に数字を含むセルを調べたい
-
エクセル 文字数 多い順 並...
-
【エクセル】区切り位置で分割...
-
「B列が日曜の場合」C列に/...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
えエクセルで○は1とし△は0.5で...
-
VBAで組み合わせ算出やCOUNTIFS...
-
急いでいます。論文での数式の...
-
URLの?以降の名称(~~/index...
-
UWSCのCALLで呼び出すファイル...
-
Excel 英大文字小文字を区別せ...
-
VBA スタック容量が足りない・...
-
誰か解いてください!
-
Excel ユーザーフォームのオプ...
-
a1,...,anをRnの基底とする時、...
-
EXCELで2つの数値のうち大きい...
-
Excelで隣のセルと同じ内容に列...
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルでオートフィルタのボ...
-
エクセルで特定の文字が入って...
-
エクセルで、2種類のデータを...
-
エクセルのオートフィルタで最...
-
Excelで半角の文字を含むセルを...
-
2つのエクセルのデータを同じよ...
おすすめ情報