谈谈计算机中的整数

  1. 前言
  2. 整形长度
  3. 整数在内存中的存储形式
  4. 整形存储的原理探究

一:前言

整数是从小学就开始学习的内容,作为程序员,整形是平时玩的最不亦乐乎的东西。这篇博文,内容基本都在大学计算机基础书本中出现,这里就算做个人笔记,加深记忆~

二:整形长度

以C语言为例,整形是int。一般占用4个字节,即可以表示2^32个数字,大约43亿。虽然已经很大了,不过如果要表示更大的数字,比如银河系的星球个数,那就需要存储量更大的数据类型,于是便出现了long。如果要存储的数据是比较小的,为了不浪费内存空间,又出现了short类型。三者的关系是:

short 至少占用 2 个字节。
int 建议为一个机器字长。32 位环境下机器字长为 4 字节,64 位环境下机器字长为 8 字节。
short 的长度不能大于 int,long 的长度不能小于 int。

也就是说,short可能和int一样大,int也可能和long一样大。

三:整数在内存中的存储形式

C语言规定,int在内存中的最高位为符号位,0~30 位表示数值,31 位表示正负号。当然,如果明确数据的范围是正数,C语言也提供了无符号数,即只能表达正数范围的整数。无符号数没有符号位,相当于32位都是表示数值,所以无符号数表示正数的范围是有符号数的两倍。

整形在内存中的存储

加减法是最基本的运算,所以在计算机中直接由硬件提供,所以硬件的设计要尽量简单。有符号数因为有符号位,计算机要专门识别符号位和数值位,无疑加大了硬件电路的复杂度,所以,人们想出了两个优化目标:

1.让符号位也参与运算,简化电路
2.加法和减法统一

那如何优化呢?这要先从几个概念说起~

  1. 原码:
    将一个整数转换成二进

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值