解题思路:
原码转化为补码,分两种情况: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语言代码)浏览:1395 |
震宇大神的杀毒软件 (C++代码)浏览:1110 |
本人酷爱递归实现很多问题,这里也是浏览:549 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:685 |
母牛的故事 (C语言代码)浏览:715 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:520 |
矩阵乘方 (C语言代码)浏览:1022 |
循环入门练习5 (C语言代码)浏览:829 |
淘淘的名单 (C语言代码)浏览:1222 |
C语言程序设计教程(第三版)课后习题12.6 (C语言代码)浏览:649 |