ページ 11

困っています

Posted: 2012年2月22日(水) 21:30
by ハヤテ
問題をそのまま書くんで出来れば今日中に教えてください・・・
2進数10110001-2進数00101110の計算を2の補数を利用して計算する
という問題です。全く出来なくて困っています、助けてください

Re: 困っています

Posted: 2012年2月22日(水) 21:43
by nullptr
http://dixq.net/board/board.html
↑フォラムルールです。


「うまくいきません」という質問は大抵回答に困ります。

  1. 自分は今何がしたくて

  2. どう取り組んで(作ったプログラムはどれで

  3. どのようなエラーやトラブルで困っていて

  4. 自分は何が解らないのか、知りたいのか

  5. 今のCの知識はどの程度なのか

この5点をしっかりと明記して下さい。

そもそも、これってプログラムの問題なのかすら分からないんですが;
これをコードに起こせということでしょうか?

Re: 困っています

Posted: 2012年2月22日(水) 21:54
by たかぎ
課題の丸投げなので、突き放した回答をします。

コード:

#include <iostream>
#include <bitset>
#include <string>

int main()
{
    std::string a("10110001"), b("00101110");
    unsigned long t = std::bitset<8>(a).to_ulong() - std::bitset<8>(b).to_ulong();

    std::cout << "  " << a << std::endl;
    std::cout << "-)" << b << std::endl;
    std::cout << "----------" << std::endl;
    std::cout << "  " << std::bitset<8>(t) << std::endl;
}
コードの意味は自分で考えてください。
とくに、どこで2の補数を使っているかは、じっくり考えてください。

Re: 困っています

Posted: 2012年2月22日(水) 22:02
by ハヤテ
2の補数さえ出来ればできるんです。
もう、ここ以外はやったので補数の部分を教えてください・・・

Re: 困っています

Posted: 2012年2月22日(水) 22:10
by softya(ソフト屋)
学王さんと同じ方でしょうか?
名前の統一をお願いします。

Re: 困っています

Posted: 2012年2月22日(水) 22:26
by たかぎ
ハヤテ さんが書きました:2の補数さえ出来ればできるんです。
もう、ここ以外はやったので補数の部分を教えてください・・・
では、もう少しわかりやすく...

コード:

#include <iostream>
#include <bitset>
#include <string>

int main()
{
    std::string a("10110001"), b("00101110");
    unsigned long t = std::bitset<8>(a).to_ulong() + -std::bitset<8>(b).to_ulong();

    std::cout << "  " << a << std::endl;
    std::cout << "-)" << b << std::endl;
    std::cout << "----------" << std::endl;
    std::cout << "  " << std::bitset<8>(t) << std::endl;
}
これでどうでしょうか?

Re: 困っています

Posted: 2012年2月22日(水) 22:47
by beatle
2の補数は,全ビットを反転させて1を足すだけです.
0101の2の補数は1011です.
0101
ビット反転
1010
1加算
1011

Re: 困っています

Posted: 2012年2月22日(水) 22:55
by zz
似たような投稿がありますが同じ人ですか?
http://detail.chiebukuro.yahoo.co.jp/qa ... 1182046921