gpt4 book ai didi

c++ - 使用 bitset 转换带符号的短整型

转载 作者:行者123 更新时间:2023-11-30 03:48:16 25 4
gpt4 key购买 nike

我想将包含 0 和 1 的字符串转换为带符号的短字符串。这项工作,但负数我有错误的值(value)观。我认为,问题是从无符号转换为有符号。怎么解决这个问题?例子:971就是971,425 是 425 ,-122 是 3974 ,-394 是 3702 ,-2032 是 2064

bitset<12> b(binary);//binary is string of 0 and 1
cout<<(signed short)b.to_ulong()<<"\n";

最佳答案

在16位有符号整数中,负数表示为:

1xxx xxxx xxxx xxxx

正数为:

0xxx xxxx xxxx xxxx

例子:

0000 1111 1000 0110 => 3974

您需要的是一个 12 位整数,其中负数表示为:

.... 1xxx xxxx xxxx

例子:

.... 1111 1000 0110 => -122

你可以这样做:

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

using namespace std;

struct C {
signed short b : 12; // 12 bit integer
};

int main() {
string binary = "111110000110"; // 3974
bitset<12> b(binary);

struct C c = { static_cast<signed short>(b.to_ulong()) };

cout << c.b << "\n"; // prints -122
}

关于c++ - 使用 bitset 转换带符号的短整型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33275646/

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