Chap 2 Representing and Manipulating Information (CS:APP)
--------------------------------------------------------------------------------------------------
Author: YuManZI
2014/06/23 1.1-3.5
2014/06/24 3.6-3.8
2014/06/27 4.1
2014/06/28 4.2-4.5
--------------------------------------------------------------------------------------------------
1. Information Storage
1.1 Virtual Memory: a machine-level program views memory as a very large array of bytes.
1.2 Data Sizes (bytes)
32 bit: char 1; short [int] 2; int 4; long [int] 4; long long [int] 8; char *(any pointer) 4; float 4; double 8;
64 bit: char 1; short [int] 2; int 4; long [int]8; long long [int] 8; char *(any pointer)8; float 4; double 8;
Contents within square brackets [] are optional. The main difference between 32 bit and 64 bit machines are following two points: a) different sizes of data type long; b) different sizes of pointers.
1.3 Byte Ordering: big endian & little endian. (Takinh 0x01234567 as example.)
Big endian, the most significant byte comes first(lower address), bytes from low address to high address are 01 23 45 67, respectively;
Little endian, the least significant byte comes first(lower address), bytes from low address to high address are 67 45 23 01, respectively.
1.4 Shift Operations in C
Left shift << k: dropping off the k most significant bits and filling the right end with k zero;
Logical right shift >>k: dropping off the k least significant bits and filling the lest end with k zero;
Arithmetic right shift >>k: dropping off the k least significant bits and filling the lest end with k themost significant bit.
Arithmetic right shift uses the most significant bit as filling unit, because of the two's complement representation of negative integers. In some languages(e.g. java), the number of shifting bits can never be more than bit sizes of data types.
2. Integral Data Types
2.1 Unsigned Encodings (w bits, x=[x_(w-1), x_(w-2),...,x_0])
B2U(x)=sigma{i=[0,w-1]}(x_i*2^i)
B2U means Bits to Unsigned
It can represent integers between [0..2^w-1]
2.2 Two's-Complement Encodings (same setting as 2.1)
B2T(x)=-x_(w-1)*2^(w-1) + sigma{i=[0,w-2]}(x_i*2^i)
B2T means Bits to Two's
It's a signed encoding, can represent integers between [-2^(w-1), 2^(w-1)-1], the difference between it and Unsigned encoddings are the weight of the significant bit, i.e. positive for unsigned and negative for two's-complement.
2.3 Conversions
Signed<-->Unsigned with identical size: the key is to keep bit representation stable;
Large size-> Small size with same type of signed or unsigned: truncate directly;
Chap 2 Representing and Manipulating Information (CS:APP)的更多相关文章
- chapter 2: Representing and manipulating information
C allows conversion between unsigned and signed. The rule is that the underlying bit representation ...
- 《CSAPP》读书杂记 - Chapter 2. Representing and Manipulating Information
1. 一段查看地址内容的代码 代码: #include <stdio.h> typedef unsigned char *byte_pointer; void show_bytes(byt ...
- 深入理解计算机系统 (CS:APP) Lab2 - Bomb Lab 解析
原文地址:https://billc.io/2019/04/csapp-bomblab/ 写在前面 CS:APP是这学期的一门硬核课程,应该是目前接触到最底层的课程了.学校的教学也是尝试着尽量和CMU ...
- CS:APP配套实验 Data Lab
刚刚完成注册博客,想写一篇随笔,方便以后自己回顾.如果恰好也能帮助到你,是我的荣幸. 这次随笔是记载我的计算机系统(CS:APP,Computer Systems:A Programer's Pers ...
- 图文并茂-超详解 CS:APP: Lab3-Attack(附带栈帧分析)
CS:APP:Lab3-ATTACK 0. 环境要求 关于环境已经在lab1里配置过了.lab1的连接如下 实验的下载地址如下 说明文档如下 http://csapp.cs.cmu.edu/3e/at ...
- ubuntu12.04 安装CS:APP Y86模拟器
下的第一UBUNTU12.04下Y86模拟器的安装:(參考http://archive.cnblogs.com/a/1865627/ 作适当改动) 1.安装bison和flex词法分析工具 sudo ...
- 《CS:APP》二进制炸弹实验(phase_1-3)
<深入理解计算机系统>第三章的bomb lab,拆弹实验:给出一个linux的可执行文件bomb,执行后文件要求分别进行6次输入,每一次输入错误都会导致炸弹爆炸,程序终止.需要通过反汇编来 ...
- 深入理解计算机系统 (CS:APP) 缓冲区漏洞实验 – Buffer Lab 解析
原文地址:https://billc.io/2019/05/csapp-cachelab/ 写在前面 这是 CSAPP 官网上的第 4 个实验 buflab,也是学校要求的第三个实验.这个实验比上一个 ...
- 信息的表示和处理 及 CS:APP 15213 datalab
信息的表示和处理 在通用计算机中中,字节作为最为最小 的可寻址的内存单元,而不是访问内存中单独的位. 寻址和字节顺序 big endian (大端法),数据最高字节部分地址在地址处,和人的感觉逻辑相似 ...
随机推荐
- 乐观锁-version的使用
出处:http://chenzhou123520.iteye.com/blog/1863407 乐观锁介绍: 乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁假设认为数据一般 ...
- Nginx 编译参数详解/大全
Nginx参数: –prefix= 指向安装目录 –sbin-path 指向(执行)程序文件(nginx) –conf-path= 指向配置文件(nginx.conf) –error-log-path ...
- 网络采集软件核心技术剖析系列(5)---将任意博主的全部博文下载到内存中并通过Webbrower显示(将之前的内容综合到一起)
一 本系列随笔概览及产生的背景 自己开发的豆约翰博客备份专家软件工具问世3年多以来,深受广大博客写作和阅读爱好者的喜爱.同时也不乏一些技术爱好者咨询我,这个软件里面各种实用的功能是如何实现的. 该软件 ...
- Delphi~通过程序窗体句柄获取程序路径
http://www.cnblogs.com/Jesses/articles/1636323.html 引用PsAPI var h:HWND; pid: Cardinal; pHandle: T ...
- Easyui datagrid 隐藏多选框 checkbox
在加载 表格的时候添加事件:onLoadSuccess 在事件中写入下面句,用空代替原有HTML 达到取消效果. $(".datagrid-header-check").html( ...
- Solr6.6.0 用 SimplePostTool与界面dataimport索引方式区别
通过测试发现用SimplePostTool与solr界面dataimport索引数据的结果有如下区别: 1.SimplePostTool索引数据对结构化数据文件索引比较合适,比如csv/json/xm ...
- ubuntu下wine操作usb串口
呃,换成ubuntu后想玩下文曲星,貌似没有linux下的下载工具,只好用wine. 用的是ch340的usb转串口,不得不说ubuntu果然集大成,这些驱动都有了,用minicom设置设备为/dev ...
- 安装dubbo-admin报错 URIType BeanCreationException
安装dubbo-admin报错 URIType BeanCreationException 学习了:https://blog.csdn.net/lsm135/article/details/52725 ...
- 转:使用gradle 构建编译程序
https://rinvay.github.io/android/2015/04/09/Build-Android-with-Gradle/
- JavaScriptl 类数组转换为数组
slice和Array.form方法,具体见示例代码: <!DOCTYPE html> <html lang="zh"> <head> < ...