在内存中整型的存储

整型的存储

整型在内存中的存储都是以补码的形式进行存储的

原码、反码、补码

在计算机中数据可以分为有符号数无符号数
数据的表示方法为:原码,反码和补码

  • 原码:二进制序列(有符号数最高位为符号位
    反码:将原码的_符号位不变_,其他位依次取反
    补码:反码+1(其中符号位要参与运算
  • 无符号数:原码=反码=补码
    有符号数:最高位代表符号位,正数“0”,负数:“1”
  • 有符号正数:原、反、补相同,最高位为0
  • 有符号负数:要进行原、反、补的转换

数据的写入和读取

在定义变量时,首先是开辟对应的空间

写入数据

将数据转化为对应的二进制序列,然后写入对应的内存空间

读取数据

根据变量的类型,解释内存里面二进制是什么含义。

  1. 先看变量的类型(确定类型是否有符号位)
  2. 无符号数直接转成十进制数
  3. 有符号数,先看符号位,若为0,则直接转成十进制
  4. 若有符号,且符号位为1,按照原码转补码的方式进行转化
    在读取时,二进制本身是不会发生变化的,但是经过类型的解释二进制代表的含义会发生相应的变化(这也就是变量类型的意义)
    在这里插入图片描述

【首先给a开辟一个四字节的空间,将-10转化为二进制(1000 1010),将二进制序列以补码的形式(1111 0110)写入到已经开辟好的空间中;
在读取时,由于unsigned char 是无符号的,直接将1111 0110 转换为十进制为246 】

大小端

  1. 内存访问的基本单位是字节,每个字节都有对应的地址,地址也有大小之分;
  2. 数据按照字节为单位可以划分为若干个部分,其中每一部分对应的权值不同,会有权值的高低之分。
    在这里插入图片描述
    变量a的地址为0x 00 00 00 14,其中14为低权值位,00为高权值位;但是在内存中存储时将14放在了低地址处。
    小端存储:数据的低权值位放在了低地址位
    反之,位大端存储。
    在写入和读取数据时都要考虑大小端的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值