深入理解计算机系统学习(2)

信息存储
  • 大多数计算机使用8位的块,或字节,作为最小的可寻址存储器的单位,而不是在存储器中访问单独的额外,机器级程序将存储器视为一个非常大的字节数组,称为存储器。
  • 地址:存储器的每个字节都由唯一的数字来标识 虚拟地址空间:所有可能地址的集合,只是一个战线给机器级程序的概念性映像
  • 机器级代码并不包含关于数据类型的信息,每个程序对象可以简单地视为一个自己快,那么程序本身就是一个字节序列。
  • 字:每台机器都以一个字长,指明证书和指针数据的标称大小。对一个字长为w为的机器,虚拟地址范围为0 ~ 2^(w -1 )
  • 数据大小:计算机和编译器支持多种不同方式编码的数据格式,以及其他长度的数字,准确的字节数依赖于机器和编译器。
    这里写图片描述

  • 寻址和字节顺序:对于跨越多字节的程序对象,两个原则:这个对象的地址是什么,以及在存储器中如何安排这些机器,某些机器选择在存储器中按照从最低有效字节到最高有效字节的顺序存储对象(小端法),另一些则相反,按从最高有效字节到最低有效字节存储(大端法)

  • 表示字符串:C语言中字符串呗编码为一个以NULL字符结尾的字符数组,每个字符都由某个标准编码来表示。在使用ASCII 嘛作为字符码的任何系统上结果相同,与字节顺序和字大小规则无关,因而,文本数据比二进制书记具有更强的平台独立性
  • OR, AND,NOT,EXCLUSIVE-OR 能运用到任何”整性”数据类型上(char, int, 不管前面是否有修饰词 double ,short ,long)
  • 逻辑运算符 || ,&&, !–》如果对第一个参数求值就能确定表达式的结果,那么逻辑运算符就不会对第二个参数求值
  • 移位运算符 : 1》 x向左移K为,丢弃最高的K为,并在右端补k个0, 2》 逻辑右移:在左边边补K个0, 算数右移:在左边K个最高有效的值,得到的结果是X[n-1], … X[n-1],X[n-2]…….
  • 移动k位,k很大, 对于一个有w为组成的数据类型,移动k位,k>>W,
    在许多机器上,当移动一个W位值时,移动指令只考虑位移量的低log2w位。一次实际上位移量就是通过计算k mod w得到的
  • 加减法的优先级比位移运算要高
  • 整型书记类型这里写图片描述

其中大多数64为机器使用8个字节来表示long, 32位机器上使用4个字节表示

  • 无符号数的二进制表示有一个很重要的属性,就是每个介于0~2^w-1之间的数都有唯一一个w位的值编码
  • 有符号数和无符号数之间转换时,基本数值位不变,改变的只是对于位的计算
  • 当生命一个12345 或者 0x1A2B的常量被认为是有符号的,要创建一个无符号常量必须存在后缀U, u
  • 当执行一个运算时,如果它的一个运算数是有符号而另一个没有符号,那么C语言会隐式地将有符号参数强制类型转换为无符号并假设都是非负数。
  • 扩展一个数字的位表示:一种常见的运算时在不同字长的证书之间转换,又能同时保持数值不变。
    1》将无符号数转换我一个更大的数据类型,在开头加0(零扩展)
    2》将补码数字转换为一个更大的数据类型:在表示中添加最高位有效值的副本,原始值[Xw-1, Xw-2, Xw-3 ….. X0]扩展后[Xw-1, …Xw-1, Xw-1, Xw-2 … 0](符号扩展)
    这里写图片描述

    -

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值