【CASPP】第一部分1:信息存储

信息存储

虚拟内存:非常大的字节数组。物理上并不是真实存在的,仅是展现给机器级程序的概念性。
内存地址:内存的每个字节都由唯一的数字来标识。
程序本身是一个字节序列。

十六进制表示

在这里插入图片描述
十进制转十六进制:
在这里插入图片描述

字数据大小

字长:通常说一个64位的机器,就是指这个机器的字长为64位。字长决定了虚拟地址的范围, 因为虚拟地址是以指定长度的字来编码的。一个字长为 w w w 的机器,虚拟地址范围为 0   2 w − 1 0 ~2^w-1 0 2w1

大多数64位机器也可以运行为32位机器编译的程序,这是一种向后兼容。
(也就是说64位机器运行的不一定是“64位程序”,还要看程序的编译方式)

寻址和字节顺序

字节是最小的可寻址内存单元
在这里插入图片描述
多字节对象被存储为连续的字节序列,其地址为所使用字节中最小的地址
(比如,上图中变量 x 的地址为 0x100)

字符串表示

字符串 “18213” 的 ASCII 字符码,以 null (00) 字符表示结尾。
在这里插入图片描述
Sun 是大端法,IA32 是小端法。可以看出使用ASCII码作为字符码在任何系统上都得能得到相同的结果,与字节顺序和字大小无关。 文本数据比二进制数据具有更强的平台独立性

ASCII是单字节编码。如果是多字节会有这么好的平台独立性吗?

代码表示

在这里插入图片描述
二进制代码并不兼容

布尔代数

在这里插入图片描述

C语言中的位运算

在这里插入图片描述

C语言中的逻辑运算

C语言中提供逻辑运算符 ||、&&、! 分别对应命题逻辑的 OR、AND 和 NOT运算。

与位级运算的区别:
1、逻辑运算认为所有非0的参数表示真,0表示假
2、逻辑运算返回结果为 0 或1

移位运算

C/C++中的移位运算:
在这里插入图片描述
逻辑右移补0,算数右移补原来的最高位。对于无符号数,一定是逻辑右移;有符号数,编译器几乎使用算术右移。在Java中,>>表示算术右移,>>>表示逻辑右移。

  • 移位运算是可结合的
  • 移动 k (k>=w) 位时,编译器实际上执行的移位指令只考虑了 k mod w 位。
  • 优先级小于加法/减法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值