解题思路:
正数的补码即其原码,负数的补码,除符号位取反加一(reverse、add1)
注意事项:
参考代码:
#include<bits/stdc++.h> using namespace std; void reverse(string& s) { for (int i = 1; i < 16; ++i) { if (s[i] == '0') s[i] = '1'; else s[i] = '0'; } } void add1(string& s) { bool carryBit = false; if (s[15] == '0') { s[15] = '1'; } else { s[15] = '0'; carryBit = true; for (int i = 14; i >= 0; --i) { if (s[i] == '0' && carryBit) { s[i] = '1'; carryBit = false; break; } if (s[i] == '1' && carryBit) { s[i] = '0'; } } } } int main() { string s; cin >> s; if (s[0] != '0') { reverse(s); add1(s); } cout << s << endl; return 0; }
0.0分
5 人评分
WU-判定字符位置 (C++代码)浏览:1395 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:586 |
1908题解浏览:633 |
1128题解(返回值为数组的情况)浏览:450 |
Tom数 (C语言代码)浏览:724 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:553 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:565 |
A+B for Input-Output Practice (I) (C语言代码)浏览:570 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1180 |
C语言训练-斐波纳契数列 (C语言代码)浏览:593 |