C程序学习_二进制转换问题
一、十进制转十六进制
1 //十进制转十六进制 2 #include<stdio.h> 3 #include <stdlib.h> 4 int main() 5 { 6 int i; 7 printf("please input decimalism number:\n"); 8 scanf("%d",&i); 9 printf("the hex number is %x\n",i); 10 return 0; 11 }
二、十进制转二进制
//十进制转二进制 int main() { int i,j,n,m; int a[16]={0}; // clrscr();//TC特有清屏 system("cls"); printf("please input a decimalism(0~32767):\n"); scanf("%d",&n); for(i=0;i<15;i++)//考虑整型正数部分,最高位为0 { m=n%2; a[i]=m; n=n/2; } for(i=15;i>=0;i--)//余数顺着存倒着取 { printf("%d",a[i]); if(i%4==0) printf(" "); } printf("\n"); return 0; }
三、负数转换成二进制
原码 补码 反码
正数:原码=补码=反码
负数:原码是最高位符号为1,其他为绝对值对应的原码。
补码:原码除符号位各位取反。
反码:原码除符号位各位取反再加1。
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 int x,i; 6 scanf("%d",&x); 7 for(i=15;i>=0;i--) 8 printf("%d",x>>i&1); 9 system("pause"); 10 return 0; 11 }