我有一个字符串:
1010
字符串的无符号表示在执行后为10:
string immediateValue = "1010";
char immediateChars[5];
strcpy(immediateChars, immediateValue.c_str());
char * ptr;
long parsedInteger = strtol(immediateChars, &ptr, 2);
据我所知,strtol只能用于获取无符号表示。有没有办法得到2的补码值-6?
答案 0 :(得分:3)
检查您的第一个字符,如果是0
,则通常使用n
= strtol
,如果是1
则翻转位,例如" 1010"到" 0101",然后取{1}}翻转的字符串,该值减去1的负数就是你的答案。
答案 1 :(得分:0)
这些数字是二进制字符串,您必须将它们转换为denary。
公害。字符串可能太长而不能简单地打包很长,这使得生活变得更容易(在长的时间内将位置推,然后调用sprintf())。您将要编写自己的二元除法例程,除以二进制十(" 1010")并取余数。那是你的最后一位数。然后重复,直到数字变为零。作为最后一步,反转否定数字以匹配左侧约定的最高有效数字。
这是一大堆代码,但作为学习练习是合理的。