2進数が負であるかどうかはどうすればわかりますか?
現在、私は以下のコードを持っています。バイナリへの変換は正常に機能します。10進数に変換するとき、左端のビットが1であるかどうかを確認して、それが負であるかどうかを判断する必要がありますが、その方法がわかりません。
また、Bin2関数に1と0を出力させる代わりに、整数を返すようにするにはどうすればよいですか?文字列に格納してからintに変換したくありませんでした。
編集:私は8ビットの数字を使用しています。
int Bin2(int value, int Padding = 8)
{
for (int I = Padding; I > 0; --I)
{
if (value & (1 << (I - 1)))
std::cout<< '1';
else
std::cout<<'0';
}
return 0;
}
int Dec2(int Value)
{
//bool Negative = (Value & 10000000);
int Dec = 0;
for (int I = 0; Value > 0; ++I)
{
if(Value % 10 == 1)
{
Dec += (1 << I);
}
Value /= 10;
}
//if (Negative) (Dec -= (1 << 8));
return Dec;
}
int main()
{
Bin2(25);
std::cout<<"\n\n";
std::cout<<Dec2(11001);
}