当前位置:文档之家› 无符号数、有符号数、原码、反码、补码——数据在计算机内部的表示

无符号数、有符号数、原码、反码、补码——数据在计算机内部的表示

数据在计算机内部的表示与存储
作者:刘英皓
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@。

相关主题