• 締切済み

二入力の足し算

2桁の二入力x0,x1,y0,y1の足し算の計算法をf0,f1,g0,g1を用いて表しなさい 但し、x0,y0は下の位を表し、x1,y1は上の位を表す。また、足し算の結果は一番下の位をh0,次をh1,最上位をh2で表しなさい 例:h0(x0,x1,y0,y1) = f0(x0,G1(X0,Y0,Y1))+g0(x0,y0,y1) 解答欄 h0(x0,x1,y0,y1)= h1(x0,x1,y0,y1)= h2(x0,x1,y0,y1)= 英字が大文字になっているところは否定を表しています カルノー図から真理値表を作成するくらいなら出来るのですが、この問題は意味がよく掴めないでいます 過去問を拾ってきたものなので、課題等ではありません 解説を宜しくお願いいたします

みんなの回答

  • info22
  • ベストアンサー率55% (2225/4034)
回答No.1

fやgの定義(説明)が書かれていませんので回答ができません。 説明が抜けていませんか? 一般に2進2桁の加算器は半加算器(Half Adder)一個と全加算器(Full Adder)一個あれば実現できます。 なお、全加算器は半加算器2個とOR回路1個で構成できます。 http://www.ee.t-kougei.ac.jp/tuushin/lecture/lcircuit/adder/fadder2.png 2進加算器(2~4ビット) http://oshiete1.goo.ne.jp/qa834634.html http://hiren.s19.xrea.com/tips/2bit_add/2bit_add_1.gif http://www2.denshi.numazu-ct.ac.jp/~nagasawa/fpga/new_fpga/vhdl/ex_4.html http://www.di.takuma-ct.ac.jp/~matusita/GuenCAD/QandA/adder/carry_look_ahead/adder1-cir.png http://www.clas.kitasato-u.ac.jp/~ogawa/CompSci02/CompSci02-8.bmp

mkmk05
質問者

お礼

回答ありがとうございます そうなんです、自分もfやgがなんなのか分からず困っていました 念のため問題を見直してみたのですが、これ以上の説明はありませんでした 全加算器と半加算器を考慮して問題をよく見てみます

関連するQ&A

  • 論理回路の位とは

    0、1の値を取る論理変数x、yで一桁2入力x、yの足し算の真理値表をf0が一番下の位、f1がその一つ上の位としてつくりたいのですが、下の位、上の位という意味が分りません。 どういう意味なのか、また真理値表にするとどのようになるのかをご教授していただけないでしょうか。 宜しくお願いします。 x y f0 f1 0 0 ? ? 0 1 ? ? 1 0 ? ? 1 1 ? ?

  • 真理値表→論理式

    3桁の2進数X = (x2, x1, x0)を入力し、2倍して1を足し出力する 論理回路があります。 ここで出力をY= (y3, y2, y1, y0)とし、x2,y3を最上位ビット x0, y0を最下位ビットとします。 これは、真理値表は x2 x1 x0  y3 y2 y1 y0 0  0  0   0  0  0  0 0  0  1   0  0  1  1 0  1  0   0  1  0  1 0  1  1   0  1  1  1 1  0  0   1  0  0  1 1  0  1   1  0  1  1 1  1  0   1  1  0  1 1  1  1   1  1  1  1 となると思うんです。ここから、論理式の作り方を教えていただけないでしょうか? 出来れば、最簡形であるとうれしいです。 よろしくお願いします。

  • 何がおかしいかわかりません

    <---の所だけが切削深さがおかしくなるのですが。なぜでしょう 宜しくお願いします NC装置はファナック15M G91G64G40G17 G00G42D02X300. Y30. M12 G01G43Z35.F2500H12 Y-30. F3000 G61Y-400. F4500 X400. Y400. X-430. G01G43Z-35.F3000H00 G40G64X30.F4500 M21 G00X43.04 Y-258.8 M13 G01G43Z17.F2500H13 G18G03 X110.09 Y-110.09 R314.06 F4500<---ー G01 X18.65 Y10.61 F3000 G19G02 X99.08 Y120.09 R314.06 F4500 <---- G00 X84.75 Y-3.64 G19G03 X-42.34 Y-149.82 R314.06 F4500 G01 X-41.38 Y1.66 F5000 G18G02 X-145.87 Y-54.42 R314.06 F4500 G01 X-45.05 Y-2.33 F5000 G19G03 X-42.34 Y-149.82 R314.06 F4500 G00 X97.71 Y76.99 G18G03 X146.78 Y-51.9 R314.06 F4500 G00 X79.56 Y-24.28 G19G02 X-59.27 Y143.96 R314.06 F4500 G01G43Z-17.F3000H00 G00G17 X-603.41 Y451.79 M21 M30

  • 集合と濃度の問題のやり方を教えてください。

                               問題  集合Xの濃度を♯Xであらわす。特に、空集合φに対しては、♯φ=0であり、一元集合{φ}に対しては、♯{φ}=1である。集合Xから集合Yへの写像全体の集合をY^Xと表す。 更に、濃度のべき乗〖(♯Y)〗^(♯X)を♯(Y^X)と定義する。以下の問いに答えよ。 (1)♯X_1=♯X_2かつ♯Y_1=♯Y_2ならば、〖(♯Y₁)〗^(♯X₁)=〖(♯Y₂)〗^(♯X₂)を証明せよ。 (2)0^(♯X)を求めよ。 (3)特に、0⁰を求めよ。 (1)を、以下のように途中までやりました。  ♯X_1=♯X_2より、fという全単射(f;X₁→X₂)が存在。   ♯Y_1=♯Y_2より、gという全単射(g;Y₁→Y₂)が存在。(仮定より)  ゆえに Φ:(Y₁)^(X₁)→(Y₂)^(X₂) と置き、全単射であればいい。   そこで、(Y₁)^(X₁)∍h、(Y₂)^(X₂)∍iとして、hとiを用いて、どのようにして全単射を示せばよいか教えてください。お願いします。   ※h=g⁻¹◦i◦f、i=(g)◦h◦f⁻¹ (2)、(3)についての解き方も併せてお願いいたします。よろしくお願いします。

  • 大学数学

    2つの写像 f=(f1,f2) 、 g=(g1,g2) : R^2→R^2 を f(x1,x2) =(f1(x1,x2) , f2(x1,x2)) =(x1+x2 , x1x2) (∈R^2) for (x1,x2)∈R^2、 g(y1,y2) =(g1(y1,y2) , g2(y1,y2)) =(1/2{y1-|(y1)^2-4y2|^(1/2)} , 1/2{y1+|(y1)^2-4y2|^(1/2)} (∈R^2) for (y1,y2)∈R^2 によって定義し、 X={(x1,x2)∈R^2 | x1≦x2} ,Y={(y1,y2)∈R^2 | (y1)^2≧4y2} (⊂R^2) とおく。 ----- (1) f(R^2) ⊂Y , g(R^2) ⊂X が成り立つことを示して下さい。 (2) 写像f~ : X→Y 、g~ : Y→X を f~(x1,x2)=f(x1,x2) for (x1,x2) ∈X 、 g~(y1,y2)=g(y1,y2) for (y1,y2) ∈Y によって定義するとき、 f~、g~ は共に全単射であり、g~=(f~)^(-1) が成り立つことを示して下さい。 補足 証明なので丁寧に省略なしでお願いします

  • 2進数の足し算について

    CPUは引き算を行うことができず、2の補数を用いて引き算を足し算として考えれると知りました。 そこで8bitの最上位桁を符号とした7bitの引き算-24+(-8)を計算してみたのですが 24(10進数)→0011000(2進数)→1101000(2の補数) 8(10進数)→0001000(2進数)→1111000(2の補数) 符号 7654321←bit  1 1101000 +1 1111000  X 1100000 となり、1100000の2の補数をとると 0100000(2進)→32(10進数)で答えを求められました。 そこでお聞きしたいのですが、値を足したとき(↑の例だと1100000)が求められたときにどういった条件だと1100000の2の補数をとる必要があるのでしょうか? ↑の例だとXがどの条件のときでしょうか? 質問が長くなってしまいましたがよろしくお願いします。

  • 濃度の問についてご教授願います。

    (1)は途中まで解いてみました。(2)(3)はどのように証明してゆけばよいのでしょうか?お願いいたします。                              問題  集合Xの濃度を♯Xであらわす。特に、空集合φに対しては、♯φ=0であり、一元集合{φ}に対しては、♯{φ}=1である。集合Xから集合Yへの写像全体の集合をY^Xと表す。 更に、濃度のべき乗〖(♯Y)〗^(♯X)を♯〖(Y〗^X)と定義する。以下の問いに答えよ。 (1)♯X_1=♯X_2かつ♯Y_1=♯Y_2ならば、〖(♯Y₁)〗^(♯X₁)=〖(♯Y₂)〗^(♯X₂)を証明せよ。 (2)0^(♯X)を求めよ。 (3)特に、0⁰を求めよ。 <解答> (1)♯X_1=♯X_2より、fという全単射が存在。♯Y_1=♯Y_2より、gという全単射が存在。(仮定より) また、〖(♯Y₁)〗^(♯X₁)よりhという写像がおける。〖(♯Y₂)〗^(♯X₂)より、iという写像がおける。(示すべきものより)  これより、 Φ:〖(♯Y₁)〗^(♯X₁)→〖(♯Y₂)〗^(♯X₂)  が全単射であることを言えばよいと分るのですが、「全射をどのようにして、定義にもちこむか、単射をどのようにして、定義にもちこむか」が不明です。お願いします。  (※h=g⁻¹◦i◦f、i=(g)◦h◦f⁻¹と表せますが、何か使えますでしょうか)

  • 【pic】ビットを取り出して、足し算、出力

    問 PORTB に信号を入力する。この信号のうち、上位4ビットと下位4ビットを取り出し、それぞれを足し算して、PORTAに出力するプログラムを作成せよ。以下を参考にせよ。 参考 #include <pic.h> void main(void) { int x, y, z; TRISA = 0x00; TRISB = 0xFF; for(;;) { x = (0b11000000 & PORTB) >> 6; y = (0b00111000 & PORTB) >> 3; PORTA = x; } } ということで、実際に作っては見たのですが、あっているかどうかも不明です。特に苦手な分野ですので詳しい解説の方よろしくお願い致します。 自身で書いてみたプログラム↓ #include <pic.h> void main(void) { int x, y, z; TRISA = 0x00; TRISB = 0xFF; for(;;) { x = (0b11000000 & PORTB) >> 4; y = (0b00111000 & PORTB) << 0; z = x + y; PORTA = z; } }

  • 不等式の足し算について

    a,bは正の整数で、a,bの桁数を求める問題です。 23≦4log[10]a + 4log[10]b<24・・・(1) 15≦4log[10]a - 4log[10]b<16・・・(2) (1)+(2)より 38≦8log[10]a<40 10^38≦a^8<10^40・・・(3) (3)を1/8乗して 10^(19/4)≦a<10^5 10^4<a<10^5 したがって、aは5桁の数である。 そこでなのですがこれを答えとしてよいのでしょうか? 不等式どうしの足し算(四則演算すべても)は必要十分条件ではないですよね?そこが引っかかるのですが・・・。 つまり、 「23≦4x+4y<24・・・(1) 15≦4x-4y<16・・・(2) (1)+(2)より 38≦8x<40 19/4≦x<5・・・(答) (1)(2)⇔(答)ではないのにこれをxの範囲として良いのでしょうか?」という質問です。

  • 分数の足し算をさせるプログラムが分かりません。どなたか分かりませんか?

    分数の足し算をさせるプログラムが分かりません。 C言語の問題で分数の足し算までは一応できるんですが、答えがでたときに整数で出すやり方と約分して表す方法が分かりません。 どなたか知恵を貸してくれませんか? ユーザから4つの整数を入力し、はじめに入力された2個の整数と後に入力された2個の整数を分数と考え、その分数の和を表示するプログラムを作成せよ。 例えば、「3」「4」「5」「6」と入力されたときは、3/4 + 5/6を計算する。 そのプログラム内では分数の和を計算する関数を作成する。 さらに、 約分を行う関数を 再帰呼び出しを利用して作成する。 void yakubun(int *a1, int *a2) 例えば、以下の場合1/2と表示される。 int i=10,j=20; yakubun(&i,&j); printf(“%d / %d”, i, j); ちなみにここまでできました↓ #include<stdio.h> void bunsu_tasizan(int a1,int a2,int b1,int b2, int *c1,int *c2 ) { *c1=(a1*b2)+(b1*a2); *c2=(a2*b2); } int main() { int x1,x2,y1,y2,z1,z2; printf("整数を入力してください"); scanf("%d",&x1); scanf("%d",&x2); scanf("%d",&y1); scanf("%d",&y2); if(x2==0||y2==0||x2==0&&y2==0) printf("0以外を入力してください"); else{ bunsu_tasizan(x1,x2,y1,y2,&z1,&z2); printf("%d/%d",z1,z2);} return (0); }