解题思路:
原码转化为补码,分两种情况:1.正数不变2.负数原码符号位不变,其余位取反加一
难点:取反加一
好好观察代码吧,注释挺清楚的,不懂得欢迎评论区留言哦~
参考代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; void move(char s[]) { int len =strlen(s); char c=s[0]; if(c=='1') { for(int i=1;i<len;i++)//除符号位 其余取反 { if(s[i]=='0') s[i]='1'; else s[i]='0'; } int t=0; for(int i=len-1;i>=1;i--)//+1操作 { if(i==len-1) s[i]+=1;//1 else s[i]+=t;//2 1+2 皆为不管怎样 先加上进位的数再说 if(s[i]>'1') {//此为特判弥补错误 改此位为'0' 进位为1 s[i]='0'; t=1; } } } return; } int main() { char s[10000]; gets(s); move(s); puts(s); return 0; }
欢迎留言评论,记得留下你的小心心哦~~~
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题5.7 (C++代码)浏览:616 |
回文数字 (C++代码)浏览:890 |
DNA (C++代码)浏览:671 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:538 |
破解简单密码 (C语言代码)浏览:1866 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:695 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:747 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:674 |
【亲和数】 (C语言代码)浏览:908 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:588 |