数据在计算机内部的表示与存储
作者:刘英皓
2013/4/17 今天在做单片机实验的时候,突然对一个问题产生了浓厚的兴趣:数据在计算机内部是怎么表示的?晚上查阅了大量的资料,终于把其中的玄机弄明白了。
资料来源甚广,在此就不一一声明了,感谢!!
数据是什么?它是用来表示信息的。
是信息的载体。
比如数值、文字、语言、图形、影像等都是不同形式的数据。
而在计算机中,无论是数值型数据还是非数值型数据,它们都被表示成了0和1。
既然都变成了0和1,那计算机怎么区别这些不同的信息呢?别担心,它们各在有各自的编码规则。
非数值型数据的编码主要有ASCII 码和汉字编码。
这里不深究。
数值型数据:它主要有两种形式,有符号数和无符号数
1、有符号数和无符号数
它们的定义估计你都听腻了,我就不重复了,我只强调两点:
a.计算机不区分有符号数和无符号数。
b.只有有符号数才有原码、反码和补码。
2、原码、反码和补码
还是两点:
a.正数的原码、反码和补码都一样。
b.负数的反码为原码除符号位的按位取反,补码为反码加1.
注意两点:
b1.反码1111 1111的补码是0000 0000.
b2.补码1000 0000没有对应的原码和反码,它表示-128,这是规定
3、计算机存储单元中的数据
这个要分两种情况:
a.无符号数:直接以对应的二进制表示。
b.有符号数:补码形式表示,无论是计算还是存取。
比如在内存单元中有一个数据为FEH,那么它到底是表示什么?254还是-2?没关系,你说是什么就是什么。
因为计算机是不会区分这个数是有符号数还是无符号数的。
在你写程序的时候,指定这个量是有符号的,FEH就是一个补码,可以计算得它的真值就是-2,如果指定它是无符号的,那么它就是254。
不同的形式在程序中便会有不同的体现。
要注意的是在计算中不要超出了数值的范围,以免发生错误。
如有疑问请联系:yinghao1991@。