关于数在计算机中的表示
我们知道,计算机中的数字有原码,补码,反码,但是你输入一个怎样确定是什么表示方式呢?还有一个数既然有这么多的表示方式,那计算机是怎样迅速处理的呢?
见最高位是1的就是反码吗?真的好困惑。。。
忘高人详细指教,可以给相关文章的链接。。。
在计算机中数的表示分两类:整型数和浮点数
程序代码:#include<stdio.h>
struct bs
{
unsigned p:1;
unsigned o:1;
unsigned n:1;
unsigned m:1;
unsigned l:1;
unsigned k:1;
unsigned j:1;
unsigned i:1;
unsigned h:1;
unsigned g:1;
unsigned f:1;
unsigned e:1;
unsigned d:1;
unsigned c:1;
unsigned b:1;
unsigned a:1;
unsigned p1:1;
unsigned o1:1;
unsigned n1:1;
unsigned m1:1;
unsigned l1:1;
unsigned k1:1;
unsigned j1:1;
unsigned i1:1;
unsigned h1:1;
unsigned g1:1;
unsigned f1:1;
unsigned e1:1;
unsigned d1:1;
unsigned c1:1;
unsigned b1:1;
unsigned a1:1;
};
prunsigned(struct bs * x)
{
printf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",x->a1,x->b1,x->c1,x->d1,x->e1,x->f1,x->g1,x->h1,x->i1,x->j1,x->k1,x->l1,x->m1,x->n1,x->o1,x->p1);
printf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d\n",x->a,x->b,x->c,x->d,x->e,x->f,x->g,x->h,x->i,x->j,x->k,x->l,x->m,x->n,x->o,x->p);
}
int main()
{
struct bs *n;
int m=10;
n=(struct bs *)&m;
prunsigned(n);
m=-10;
prunsigned(n);
}
浮点数表示:分为阶码和尾数,例如32位浮点数:规定第0位表示符号,1~8位表示阶码,第9~31位表示尾数。
补充说明:上面的32位浮点数表示方法是IEEE 754标准。
程序代码:int main()
{
struct bs *n;
int m=10;float f=-0.34375;
n=(struct bs *)&m;
prunsigned(n);
m=-10;
prunsigned(n);
n=(struct bs *)&f;
prunsigned(n);
}下面文章中讲得很详细: