python整数类型在每一台计算机上的取值范围是一样的吗_C语言中学习整数类型的取值范围有什么用,有什么意义啊?...

编程中,对于你定义的任何一个“量”,你都必须要清楚它的范围。比如月份是1~12,考虑闰月就是1~13,用了0就是0~12。如距离,1mm~60000mm,超过这个数我不处理。这样你才能决定用什么样的存储形式来保存这个量。比如1mm~60000mm的距离,保存在32位无符号整数里是合适的,64位当然也没有问题。但是同样的距离用微米表示的话就超出了32位无符号整数的范围了,就需要用更大的存储形式。

举一个例子

unsigned char counter;

for (counter = 0; counter < 1000; counter++) {

// 略}

counter在这里被当作整数使用,它是一个8位的。它能保存的值范围是0~255。这个for循环永远不会满足结束条件。

另一个例子,2038年问题。

你可能听说过“千年虫”,这个和它类似。世界上数以亿计的计算机都以POSIX为基础。POSIX的时间是以1970年1月1日0时0分0秒(POSIX纪元或UNIX纪元)开始的秒数表示的。

在32位系统中使用的是32位有符号整数。32位有符号整数的取值范围是-2147483648 ~ 2147483647。也就是说这个时间的最大值是1970年1月1日开始的2147483647秒后,即2038年1月19日3时14分07秒。此时间后再过一秒,这个存储着时间的32位有符号整数将发生上益出。有符号整数上溢出在C语言标准中是没有规定的。一种结果是,在这个数的原始形式上(无符号)再加一,导致它发生“绕回”,其作为有符号整数的值变成-2147483648,即1901年12月13日20时45分52秒。

如果系统不考虑1970年以前的时间,从而使用了32位无符号整数,那么“绕回”发生的时间将会推迟至1970年1月1日开始的4294967295秒,即2106年2月7日6时28分15秒后,再过一秒。

在64位系统中,“绕回”前是292277026596年12月4日15时30分08秒。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值