深入理解计算机系统读书笔记(二)

深入理解计算机系统读书笔记(二)

  • 数据的表示,无符号数一位就是一个数,有符号数采用补码的形式表示,最高位为负权,当最高位为1时其权重为-x(2**(w-1)),w为位数,x为最高位的取值。于是乎一个有符号数的补码表示就成了所有正权与负权之和。
  • 一个整数能被二进制方式表示,其根源在于其编码方式的唯一性,即双射,解释就是一个数在编码后有唯一的一个二进制格式与之对应,而这个二进制排列顺序在转换为整数后也有且仅有一个数与之对应。就想数学里的反函数一样。
  • 原码表示有符号数通过最高位作为符号位,如果最高位为1,则剩下的位取负权,如果最高位为0,则剩下的位取政权
  • 反码表示有符号数,最高位的权重为-x.(2**(2-1)-1) x为最高位的取值
  • 整数类型的强制类型转换,将一个无符号数转换为有符号数时二进制位的数据不变,变的只是解释这些位的方式。
  • 一个规律:一个4位有符号数-1,其强转为无符号数之后为15,注意到1+15 = 16 = 2**4。这样就能很方便得进行负数有符号数转为无符号数,当然正数两种表示方式的结果都一样,当然一切都建立在有符号数使用补码表示。其原理为,最高位权重,对于一个4位表示的整数, 当使用补码时,最高位为1时权重为-8,使用无符号数时其权重为8,两者之间差了2****4 = 16。
  • 将无符号数转换为有符号数的时候,当无符号数小于等于有符号数的最大值的时候保持不变,当无符号数大于有符号数的最大值的时候,转换后的值为U-2**w,U为当前无符号数,w二进制位数。
  • 无符号数的长度扩展是零扩展,即大端法表示在左侧填充0,对于有符号数则是符号填充,负数填充1,正数填充0
  • 在将一个长度较小的有符号数变成无符号长度较大的数的时候,是先进行符号填充再进行符号转换的,如果顺序错了将产生完全不一样的结果。
  • 当一个有符号数与无符号数进行运算时会发生隐式类型转换,项范围更广的值转换。这个过程是非直观的,往往会导致很多预料之外的结果。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值