スレを勃てるまでもないC/C++の質問はここで 12

このエントリーをはてなブックマークに追加
123助けて
10進数から2進数に変える時、2進数を補数表現で表すプログラムを教えて下さい。

ドシロウトなんで、お願いします。
124デフォルトの名無しさん:2009/07/27(月) 22:19:51
>2進数を補数表現で表す
???????????????
125デフォルトの名無しさん:2009/07/27(月) 22:39:30
>123

十進数 -10 を変換したとして
-1010 ではなく 1111111111110110 と表示したいのか?
126デフォルトの名無しさん:2009/07/27(月) 22:49:21
補数って、1の補数とか2の補数ってやつだよな。
もう忘れた。
127デフォルトの名無しさん:2009/07/27(月) 22:53:44
>>123
signed intなりsigned longに代入したあとに1ビットずつビット演算で取り出す
128助けて:2009/07/27(月) 22:54:36
>125

はい。その通りです。
129デフォルトの名無しさん:2009/07/27(月) 23:05:28
class hoge {
private:
int *p;

public:
hoge(int x) : p(new int[x]) {}
~hoge() {delete [] p;}
void fuga() {・・・}
};

int main(void) {
try {
std::cin >> x;
hoge h(x);
}
catch(std::bad_alloc& e) {
std::cout << e.what() << std::endl;
}

h.fuga();

return 0;
}

↑スコープが外れちゃうからh.fuga()でコンパイルエラーになってしまう
自動変数に対してtry-catchする場合はtryスコープを伸ばすしかない?
保守性を考えて自動変数からスマートポインタに変えるのがいいのかな?
130デフォルトの名無しさん:2009/07/27(月) 23:18:10
>>128
#include <bitset>
#include <iostream>

using namespace std;

int main() {
const unsigned long value = 10;

bitset< 16 > b( value - 1 ), result;
result = ~b;
cout << result.to_string() << endl;
}