关于数在计算机中的表示
我们知道,计算机中的数字有原码,补码,反码,但是你输入一个怎样确定是什么表示方式呢?还有一个数既然有这么多的表示方式,那计算机是怎样迅速处理的呢?
见最高位是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位表示尾数。
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); }下面文章中讲得很详细: