解题思路:
正数的补码即其原码,负数的补码,除符号位取反加一(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语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:548 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:480 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:449 |
【排队买票】 (C语言代码)浏览:899 |
【亲和数】 (C语言代码)浏览:597 |
C二级辅导-公约公倍 (C语言代码)浏览:481 |
一元一次方程 (C语言代码)浏览:4058 |
最好的,浏览:563 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:762 |
快速排序算法1浏览:877 |