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 }

猜你喜欢

转载自www.cnblogs.com/yqqwonder/p/5486272.html
今日推荐