CSAPP:信息的表和处理1
CSAPP:信息的表和处理1
关键点:寻址、内存、磁盘、虚拟地址、物理地址、整型数组。
信息存储中的几个概念整型数据类型无符号数有符号数几个概念有符号数与无符号数之间转换基于栈与基于寄存器的区别
信息存储中的几个概念
内存
内存也被称为内存储器,其作用是用于暂时存放CPU中运算的数据,计算机中的所有程序都在内存中运行。包括只读存储器(ROM:闪存、磁盘)、随机存储器(DRAM:动态随机存储器、SRAM:静态随机存储器)和高速缓冲存储器(cache)。
- 物理内存
真实的硬件设备(内存条) - 虚拟内存
操作系统给应用程序制造了一个假象,让每个应用程序认为自己独享4G(假设32位cpu),这个4G是一个虚拟地址空间。操作系统复负责内存管理,完成物理内存与虚拟内存之间的映射
地址
如果把内存比作一个个小房间,那么地址就是每个房间的编号。地址总线决定寻址范围,32位CPU寻址范围位0x00000000~0xFFFFFFFF(4G)
寻址和字节顺序
- 小端模式(little endian):低地址存放低字节,高地址存放高字节。大多数Intel都是小端模式
1int x = 0x01234567;
2char *p =(char *)&x;
3printf("%d\r\n",*p);
4*p = 0x67;
5*(p+1) = 0x45;
6*(p+2) = 0x23;
7*(p+3) = 0x01;
- 大端模式(big endian):低地址存放高字节,高地址存放低字节。
1int x = 0x01234567;
2char *p =(char *)&x;
3printf("%d\r\n",*p);
4*p = 0x01;
5*(p+1) = 0x23;
6*(p+2) = 0x45;
7*(p+3) = 0x67;
- 字节顺序:大小端模式可能造成的问题
- 网络字节序
- 强制类型转换或者联合(union)需要注意。
整型数据类型
无符号数
假设一个整数数据类型有w位。则其数据范围位为0~。32位平台下long = int ,64位平台下long站8位。
32位平台
| 数据类型 | 位数 | 最小值 | 最大值 |
|---|---|---|---|
| unsigned char | 8 | 0 | 255 |
| unsigned short | 16 | 0 | 65535 |
| unsigned int | 32 | 0 | 4294967295 |
| unsigned long | 32 | 0 | 4294967295 |
| uint32_t | 32 | 0 | 4294967295 |
| uint64_t | 64 | 0 | 18446744073709551615 |
64位平台
| 数据类型 | 位数 | 最小值 | 最大值 |
|---|---|---|---|
| unsigned char | 8 | 0 | 255 |
| unsigned short | 16 | 0 | 65535 |
| unsigned int | 32 | 0 | 4294967295 |
| unsigned long | 64 | 0 | 18446744073709551615 |
| uint32_t | 32 | 0 | 4294967295 |
| uint64_t | 64 | 0 | 18446744073709551615 |
有符号数
假设一个整数数据类型有w位。则其数据范围位为~
.有符号数+无符号数 =
32位平台
| 数据类型 | 位数 | 最小值 | 最大值 |
|---|---|---|---|
| char | 8 | -128 | 127 |
| short | 16 | -32768 | 32767 |
| int | 32 | -2147483648 | 2147483647 |
| long | 32 | -2147483648 | 2147483647 |
| int32_t | 32 | -2147483648 | -2147483647 |
| int64_t | 64 | -9223372036854775808 | 9223372036854775808 |
64位平台
| 数据类型 | 位数 | 最小值 | 最大值 |
|---|---|---|---|
| char | 8 | -128 | 127 |
| short | 16 | -32768 | 32767 |
| int | 32 | -2147483648 | 2147483647 |
| long | 64 | -9223372036854775808 | 9223372036854775808 |
| int32_t | 32 | -2147483648 | 2147483647 |
| int64_t | 64 | -9223372036854775808 | 9223372036854775808 |
几个概念
数值在计算机中都是以补码形式存在的。
- 原码:符号位加上真值的绝对值。即第一位表示符号位,其余位表示值
- 反码:正数反码等于其原码(本身),负数反码在其原码基础上,符号位不变,其余各位取反。
- 补码:整数补码等于本身,负数 = 反码 + 1。
| 数值 | 原码 | 反码 | 补码 |
|---|---|---|---|
| 85 | 01010101 | 01010101 | 01010101 |
| -85 | 11010101 | 10101010 | 10101011 |
有符号数与无符号数之间转换
实际上是无符号数与补码之间的转换。-85 = 10101011 = 171U。一个w位的有符号数,假设其值位X(负数),其对应的无符号值为Y,则有:
基于栈与基于寄存器的区别
- 可移植性:基于寄存器的CPU架构,依赖于平台,寄存器指令不同。
- 不用考虑寄存器分配问题:基于栈的架构,不用考虑寄存器
CSAPP:信息的表和处理1的更多相关文章
- CSAPP:信息的表和处理2
CSAPP:信息的表和处理2 关键点:浮点数.浮点数运算. 二进制小数IEEE浮点数表示浮点数转换(单精度)参考 二进制小数 形如表示的二进制数,其中每个位的取值范围位0和1.这种表示方式的定义如 ...
- 【原创】C#搭建足球赛事资料库与预测平台(4) 比赛信息数据表设计
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源C#彩票数据资料库系列文章总目录:[目录]C#搭建足球赛事资料库与预测平台与彩票数据分析目录 本篇文章开始将逐步介 ...
- usb由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备
在设备管理器的usb设备的属性中,显示提示“由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备”.注册表坏了.经过查询,解决方法如下: 方法:打开注册表编辑器(开始--& ...
- SQL查询数据库信息, 数据库表名, 数据库表信息
SQL查询数据库信息, 数据库表名, 数据库表信息 ---------------------------------------------- -- 以下例子, 在sql_server 中可以直接运 ...
- [z]dbms_stats.lock_table_stats对于没有统计信息的表分区同样有效
常见的分区表DDL如 split partition.add partition都会生成没有统计信息的表分区table partition,长期以来我对dbms_stats.lock_table_st ...
- 查看mysql 库信息和表结构与表创建方法
一.查看基础信息 1.查看数据库存储位置 show global variables like "%datadir%"; 2.查看数据库的版本 select version(); ...
- destoon 信息发布表单提交验证
sell 模块的form表单如下: <form method="post" id="dform" action="?" target= ...
- Dynamics 365客户端编程示例:获取当前用户的信息,表单级通知/提示,表单OnLoad事件执行代码
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- SQL 从指定表筛选指定行信息 获取表行数
1.获取指定表的行数 --获取表中数据行数 --select max([列名]) from 表名 2.筛选指定表的指定行数据(数据表分页获取) http://www.cnblogs.com/morni ...
随机推荐
- js发送邮件确定email地址
<a href="mailto:wjl@tom.com?subject=aaa&body=11111">test</a>
- springboot整合netty(二)
目录 前言 正文 代码 1. 新建一个springboot项目,在pom文件中添加netty依赖: 2.新建netty服务 3.netty调用所需的服务类 4 springboot启动类 5.测试 我 ...
- Android6.0 源码修改之屏蔽导航栏虚拟按键(Home和RecentAPP)/动态显示和隐藏NavigationBar
场景分析, 为了完全实现沉浸式效果,在进入特定的app后可以将导航栏移除,当退出app后再次将导航栏恢复.(下面将采用发送广播的方式来移除和恢复导航栏) ps:不修改源码的情况下,简单的沉浸式效果实现 ...
- Vue之axios请求数据
引入文件 <script src="https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js"> ...
- 深圳市共创力推出《以用户为中心的设计UCD方法与实战》课程!
以用户为中心的设计(UCD)方法与实战 课程特色 现在以市场为中心.科技为基础.体验为卖点的商业社会里,用户体验是赢得用户青睐的关键特性.苹果.google.腾讯等顶级企业的成功充分说明了这一点.如何 ...
- 扩展Linux磁盘空间
适用于虚拟机内系统HyperV/Centos7已测 先为虚拟磁盘扩容,比如10G加到20G 最好进入单用户模式:init 1 进入管理UI:fdisk -l /dev/sda依次n {new part ...
- ORACLE导入大量数据的两种方式比较
不管是开发还是测试,工作中经常需要去批量新增测试数据,但是大量数据的新增速度有时候让我们苦不堪言,下面通过两种方式完成oracle数据的批量新增,比较两种方式的效率. 第一种方式:采用工具导入sql文 ...
- Mysql 查询昨天16:00至今天16:00之间的信息
SELECT * FROM t_violation_info WHERE ( DATE(UPDATED_TIME) = CURDATE() AND HOUR (UPDATED_TIME) < 1 ...
- [20190324]奇怪的GV$FILESPACE_USAGE视图.txt
[20190324]奇怪的GV$FILESPACE_USAGE视图.txt--//发现GV$FILESPACE_USAGE定义很奇怪,做一个记录.1.环境:SCOTT@book> @ ver1P ...
- MySQL Host is blocked because of many connection errors 解决方法
应用日志提示错误:create connection error, url: jdbc:mysql://10.45.236.235:3306/db_wang?useUnicode=true&c ...