解题思路:
正数的补码即其原码,负数的补码,除符号位取反加一(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 人评分
【蟠桃记】 (C语言代码)浏览:2221 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:324 |
C语言训练-舍罕王的失算 (C语言代码)浏览:1033 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1049 |
川哥的吩咐 (C++代码)浏览:1014 |
矩形面积交 (Java代码)浏览:1214 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:896 |
C语言训练-大、小写问题 (C语言代码)浏览:724 |
wu-淘淘的名单 (C++代码)浏览:1337 |
【魔板】 (C++代码)(时间超限,希望会的帮我改正一下)浏览:741 |