gpt4 book ai didi

c++ - 二进制-十进制负位集

转载 作者:太空宇宙 更新时间:2023-11-04 15:47:36 27 4
gpt4 key购买 nike

如何判断二进制数是否为负数?

目前我有下面的代码。它可以很好地转换为二进制文件。转换为十进制时,我需要知道最左边的位是否为 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);
}

最佳答案

您错误地检查了负值。请改为执行以下操作:

bool Negative = (value & 0x80000000); //It will work for 32-bit platforms only

或者可能只是将它与 0 进行比较。

bool Negative = (value < 0);

关于c++ - 二进制-十进制负位集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14100090/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com