数据的类型

来源:互联网 发布:c语言计算符号函数 编辑:程序博客网 时间:2024/06/06 06:48

昨天对计算机的内存做了一个初步的了解,今天翻《代码之髓》的时候看到类型这一章,发现对计算机内部数据又有了新的理解,故记录下来。


数值的表达方法

讲类型这种东西首先还是得提到数值的表达方法。

目前我的了解是在计算机中电平只有高电位和低电位两种状态,换言之也就是计算机只能识别0/1代码。

非负整数

C语言中,这种类型叫做无符号整数型(unsigned int)。

平时我们表示数字,如果用一盏盏灯泡的话(接下来的例子都是用灯泡点亮来说明)。

首先是点亮与想表达数字相当数量的灯泡,即一盏亮表示1,两盏灯亮表示2,这样表示999的话就需要999盏灯。

当然,这是在没有发明数位计算法之前。

有了数位计算法,在每一位上使用0到9这十个标记来表达数字,那么999就只需要9+9+9=27盏灯泡就能表示,比之前999盏少了很多。

而我们在日常生活中应该见到过数码管显示器,就类似下图:
LED数码管显示器
这样在有数位计算法的基础上每一位仅需要7盏灯就能表示了。那么999就只需要7+7+7=21盏灯泡,又更少了。

而我们还可以再少一点。

算盘。通过算珠的位置来表达信息。4个算珠用来表达0到4的数字,另一个算珠用来表达是否需要再加上5这个信息。这样每一位就只需要5盏灯来表示,999就只需5+5+5=15盏灯!

但在计算机中我开始也说了是使用0/1代码,这无疑是目前最简单的表示方法,相应的它使用的是二进制计算法。使用二进制后,10盏灯泡(灯泡亮和不亮两种状态的叠加2^10=1024)就能表达0到1023之前的数字,他们之间是需要数制转换的。

但在此之前,也就是早期的计算机,比如UNIVACI使用的是四盏灯泡表达数值的方法。该方法被称为excess-3(加3码),该方法需要12盏灯泡来表达0到999之间的树。

具体参考维基百科的解释

回到刚才说的二进制,现在计算机说的几位的CPU,如32位、64位等,就类似这几盏灯泡。此外还有八进制、十六进制等,一般八进制表示数值前面要加上0o或0,十六进制要加上0x。

实数

定点数

就是小数点位置确定。这样不太灵活,这就不做描述。

浮点数

比较常见的是浮点数(float),都遵循IEEE-754。

它的基本思想是:

假设用16盏灯表示小数,其中10盏表达0~1023之间的数,这是三位有效数字的信息;剩下6盏表达0~63之间的数,用来表达小数点的位置,把位置范围0~63减去33,得-33~30这个范围,把-1约定为小数点左移一位(即除以10),+1表右移一位(即乘以10),这样一来,就可以表达1023后面再跟30个零那么大的数

变量的类型

我们规定数据有各种各样的类型,比如int、float、char、string等,就是因为他们能做不同事情,实现不同的功能,并且我们一般会用变量来表示,即声明某某变量是整数。

在C语言中,声明int x,表示名字为x的变量指向的内存被解释为整数。

类型转换

隐性类型转换

即自动转换,比如整数、浮点数之间。在c语言中,当计算中包含浮点数,则整数也会先转换为浮点数再进行计算。但在做除法时,如1/2,结果为0,但一般希望显示的是0.5,这就会很容易出错,因此就需要方法来解决这类问题。

C语言是由计算对象的类型来决定是否舍去小数部分,但我们也可以通过写法来区别,比如在python3.0中,1/2=0.5,1//2=0。

关注我

0 0
原创粉丝点击