查看数字在计算机内部的二进制表示
来源:优易学  2011-12-10 17:19:13   【优易学:中国教育考试门户网】   资料下载   IT书店

  #include<stdio.h>

  int main(void){

  char c=97;

  short s=97;

  int n=97;

  float f=97;

  double d=97;

  int i,j;

  printf("char 97在计算机中的二进制表示:");

  for(i=sizeof(char)*8-1;i>=0;i--)

  printf("%d",(c>>i)&1);

  printf("\nshort 97在计算机中的二进制表示:");

  for(i=sizeof(short)*8-1;i>=0;i--)

  printf("%d",(s>>i)&1);

  printf("\nint 97在计算机中的二进制表示:");

  for(i=sizeof(int)*8-1;i>=0;i--)

  printf("%d",(n>>i)&1);

  printf("\nfloat 97在计算机中的二进制表示:");

  char* ip=&f;

  for(i=3;i>=0;i--){

  for(j=7;j>=0;j--)

  printf("%d",(*(ip+i)>>j)&1);

  }

  printf("\ndouble 97在计算机中的二进制表示:");

  ip=&d;

  for(i=7;i>=0;i--){

  for(j=7;j>=0;j--)

  printf("%d",(*(ip+i)>>j)&1);

  }

  printf("\n");

  }

  运行结果:

  char 97在计算机中的二进制表示:01100001

  short 97在计算机中的二进制表示:0000000001100001

  int 97在计算机中的二进制表示:00000000000000000000000001100001

  float 97在计算机中的二进制表示:01000010110000100000000000000000

  double 97在计算机中的二进制表示:0100000001011000010000000000000000000000000000000000000000000000

  针对float f=97在计算机内部的二进制表示,以后进行人工转换。

  将97转换成二进制为1100001(使用除2取余就能得到)

  1100001=1.100001*2^6=1.10001*2^110

  float在计算机内是32位,其中首位为符号位,1-8是阶码段,9-31是尾数段。

  符号位:正数为0,负数为1

  阶码段是这样得到的:如上97表示为 1100001=1.100001*2^110

  那么阶码段就为110+01111111=10000101;

  尾数段是这样得到的:1.100001在标准表示中,去掉第一位变成100001,后面的补0

  所以97的在计算机内部的表示为:01000010110000100000000000000000

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训