c语言代码:将任意十进制整数(包括负数)转化为二进制数,求解决。。
3条回答 默认 最新
- 技术专家团-小桥流水 2022-03-07 15:45关注
负数是在正数的基础上取反再+1
整数按32位处理,正数转换结果:
负数转换结果:代码如下:
#include <stdio.h> //将正整数转换为二进制(32位) void trans(int n,char buf[]) { int i=0; for(i=0;i<32;i++) buf[i]='0'; i=31; while(n) { buf[i]=n%2+'0'; i--; n/=2; } } int main() { int n,i,flag=1; char buf[33]={0}; printf("请输入一个数:"); scanf("%d",&n); if(n>=0) trans(n,buf); else { trans(-n,buf); //取反 for(i=31;i>=0;i--) { //取反 if(buf[i]=='0') buf[i]='1'; else buf[i] = '0'; } //+1 for(i=31;i>=0;i--) //flag表示进位 { if(flag==1 && buf[i]=='1') { buf[i]='0'; flag = 1; }else if(flag==1 && buf[i]=='0') { buf[i]='1'; flag = 0; }else if(flag==0 && buf[i]=='0') { buf[i]='0'; flag = 0; }else { buf[i]='1'; flag = 0; } } } printf("%s",buf); return 0; }
解决 5无用
悬赏问题
- ¥15 ads仿真结果在圆图上是怎么读数的
- ¥20 Cotex M3的调试和程序执行方式是什么样的?
- ¥20 java项目连接sqlserver时报ssl相关错误
- ¥15 一道python难题3
- ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
- ¥15 牛顿斯科特系数表表示
- ¥15 arduino 步进电机
- ¥20 程序进入HardFault_Handler
- ¥15 oracle集群安装出bug
- ¥15 关于#python#的问题:自动化测试