スレを勃てるまでもないC/C++の質問はここで 12
123 :
助けて:
10進数から2進数に変える時、2進数を補数表現で表すプログラムを教えて下さい。
ドシロウトなんで、お願いします。
>2進数を補数表現で表す
???????????????
125 :
デフォルトの名無しさん:2009/07/27(月) 22:39:30
>123
十進数 -10 を変換したとして
-1010 ではなく 1111111111110110 と表示したいのか?
補数って、1の補数とか2の補数ってやつだよな。
もう忘れた。
>>123 signed intなりsigned longに代入したあとに1ビットずつビット演算で取り出す
128 :
助けて:2009/07/27(月) 22:54:36
>125
はい。その通りです。
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スコープを伸ばすしかない?
保守性を考えて自動変数からスマートポインタに変えるのがいいのかな?
>>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;
}