《深入理解计算机系统》(2) 信息的表示和处理

  • 大多数计算机使用8位的字节作为最小的可寻址的内存单位,每个程序对象可以简单地视为一个字节块,程序本身就是一个字节序列。
  • 对于一个字长为x位的机器而言,虚拟地址范围为0~2x-1,程序最多访问 2x个字节。
  • 在几乎所有的机器上,多字节对象被存储为连续的字节序列,对象的地址为所使用字节中的最小地址。
    • 排列表示一个对象的字节有两个通用规则:大端法和小端法,大多数Intel兼容机都只采用小端模式。
      在这里插入图片描述
  • C语言中字符串被编译为一个以null(其值为0)字符结尾的字符数组。每个字符都由某个标准编码来表示,最常见的是ASCII码。也就是将字符转换为其对应的ASCII码值存储在计算机中。
  • 无符号数编码的定义:
    在这里插入图片描述
  • 有符号数最常见的计算机表示方式就是补码,补码编码的定义:
    在这里插入图片描述
  • 有符号数和无符号数之间的转换:
    • 补码转换为无符号数:
      在这里插入图片描述
    • 无符号数转换为补码:
      在这里插入图片描述
  • C语言中当执行一个运算时,如果它的一个运算数是有符号的而另一个运算数是无符号的,那么C语言会隐式地将有符号参数强制类型转换为无符号参数,并假设这两个数都是非负的,来执行这个运算。例如:
int i=-1;
unsigned u=1;
if(i>u) cout<<"Hello!"; //最后会输出Hello!
  • 符号扩展:
    无符号数的扩展:将无符号数扩展为一个位数更多的数据类型时,在最高位加。
    补码数(有符号数)的符号扩展:负数补码最高位加1,正数补码最高位加0。
  • 截断无符号数:将x截断为k位的结果:x mod 2k
    截断补码数值:同上,只是将最高位转换为符号位。
  • 检测补码加法中的溢出:
    在这里插入图片描述
  • 浮点数运算、IEEE754标准、舍入。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值