设置一个循环遍历字符串,设置一个初值为0的变量sum记录十进制数,从下标为0开始,作sum*2+该元素-'0'操作,遍历完成后sum即为所求之结果。代码如下:
//#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"
int main(void){
char a[]="1101001011010111000101"
int i,sum
for(sum=i=0a[i](sum*=2)+=a[i++]-'0')
printf("The result is %d\n",sum)
return 0
}
c++中负数存储时,不是简单的将符号位置为1,而是采用补码的形式存储的,负数最高位为符号位,也就是1,其余全部取反,然后再加1。
假如操作系统是32位,-1的二进制存储不是:1000
0000 0000 0001,而是:1111 1111 1111 1110+1即1111 1111 1111 1111。
扩展资料:
C语言面向过程,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。
参考资料来源:百度百科-c语言
#include<stdio.h>void ConvertData(int x,char *s,int n) { int m=0,i,k
while ( x ) { *s=x%n+'0' x/=n s++ m++ }
*s=0
s-=m for ( i=0i<=m/2i++ ) { k=s[i]s[i]=s[m-i-1]s[m-i-1]=k }
}
void main() { char str[256] int x
printf("请输入十进制数: ") scanf("%d",&x)
ConvertData(x,str,2) printf("十进制%d转换成二进制是%s\n",x,str)
}