csapp第二章 --- 信息的表示和处理

news2024/11/25 3:40:22

本章重点纲要

目录

2.1 数据存储

2.1.1 进制

2.1.2 数据在内存的存储方式---大小端

2.1.3 C语言的一些知识

2.2 整数表示

2.2.1 二进制表示整数

2.2.2 扩展、截断

2.3 整数运算

2.3.1 加减法与溢出 

2.3.2 逆元和补码的非

2.3.3乘法

2.4浮点数

2.4.1 IEEE规则

2.4.2例图


2.1 数据存储

2.1.1 进制

计算机中使用的进制无非涉及:二进制、十进制、十六进制

相互转换内容不做介绍,以下图片可以清晰表示

需要解释一下:上面图片的数都是符号表示的,其实他们对我们脑海里理解的那个数是一一对应的,这样就能理解了为什么要对这些数换来换去了。

2.1.2 数据在内存的存储方式---大小端

大端:高地址存储低位数据
小端:低地址存储低位数据

2.1.3 C语言的一些知识

32位:虚拟地址中,一块空间32位用来存储一个数据

64位:虚拟地址中,一块空间64位用来存储一个数据

注意:这里的32位和64位是针对计算机

而程序在生成可执行文件时,会出现32位或者64位的版本,这些程序的位是由编译的人觉得的。用64位的机器对32位64位程序都可以执行,而32位机器对64位文件不可执行。

数据基本类型:

二进制运算:

位运算:

 对于右移:如果数据是无符号则是逻辑右移,有符号则是算数左移

 逻辑判断:

!:非

&&:并且

||:或者

2.2 整数表示

2.2.1 二进制表示整数

无符号整型:

有符号整型(补码): 

 

最左边的一位,对于补码而言都当成负数 

无符号整型与补码之间的转换

1.通常情况下,整型会被转成补码,两者再进行运算;不过可以通过强制类型转换对补码进行转换。

2.二者的转换,对于机器中的存储数据不会改变,也就是说我们不会看到机器的二进制变掉,只是解释这个数据的方式变不同了而已。

2.2.2 扩展、截断

扩展:

无符号整型的扩展:只需在其前面添加0即可

补码扩展:观察最左边的数,扩展添加的数和最左边的数一致

截断:

无论是无符号整数还是其补码,在截断时的处理都是直接截取相对于的位数,不过对于补码而言,其读取方式依旧看最前面的数是0/1。

2.3 整数运算

针对加减法,其实与十进制的运算无异

需要注意的是:

1.在计算机中,一个数据的存储位数是有限的,因此不会出现无限的数,一切都已被规定

2.不断加减可能会出现溢出现象,因为计算机的存储单元有限

2.3.1 加减法与溢出 

溢出的情况

无符号整型:相加可能溢出,溢出后的数会小于原来两个

补码:相加相减会出现正溢出和负溢出

正溢出:两个正数相加溢出;判断结果是否为负数,是则溢出

负溢出:两个负数相加溢出;判断结果是否为正数,是则溢出

2.3.2 逆元和补码的非

逆元针对无符号整数,为讨论方便我们记一个数x,其逆元为y---满足:x+y=0

不过这里说明等于0的情况有两种:

1.0+0

2.一个数加另一个数溢出得0

补码的非

情况有三种:假设存储的最小数位-8

1.(-8)+(-8)溢出为0  --- 不同的存储单元的最小数自己相加得到的就是0,故最小数的非就是自己

2.(-4)+ 4 为 0 溢出 ---  正的加负的刚好为0,意义上好理解,但是其实是溢出变成的0

3. 0+0 为0

2.3.3乘法

简单讲,就是先两个数相乘,不管如何;得到结果后,嵌入到数据的位置上。考虑位数过大要截断,最后根据是无符号还是补码确定值。

乘2的幂 --- 乘多少个2,位运算往左移几位就是结果

除2的幂 --- 除多少个2,位运算往右移几位就是结果(补码是逻辑右移)

乘一个常数其实就是计算机会优化,变成位运算多少,加减多少

2.4浮点数

2.4.1 IEEE规则

根据上面的存储形式,其实我们不难发现浮点数的表达分为三部分:

正负符号(S),阶数(E),尾数(M)

三种形式:

1.规格化

S(符号):0为正,1为负

E(阶数):exp-Bias

M(尾数):1+f中的内容

(-1)^S *(1+M)* E

2.非规格化

S(符号):0为正,1为负

E(阶数):1-Bias

M(尾数):f中的内容

(-1)^S * M * E

2.4.2例图

k=3,n=2 ==> 格式为 0 000 00

1.非规格范围便是k位全是0,S代表正负,f中的内容全为1得到一个比0.2小一点的数,所有我们看b图可见非规格都在-0.2~0.2之间分布

2.规格最大k位为110,f的内容也全为1,得到最大 (0/1) 110 11;在-14~14之间

3.正负无穷

4.注意,0分为+0和-0,因为非规范数的符号可以表示正负,其他位为0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/385163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年中职组网络安全竞赛——综合渗透测试解析

综合渗透测试 题目如下: PS:需求环境可私信博主,求个三连吧! 解析如下: 通过本地PC中的渗透测试平台KALI2020对服务器场景进行渗透攻击,获取到RSYNC服务所开放的端口,将RSYNC服务开放的端口数值进行MD5加密后作为FLAG提交(如MD5加密前:812);

spark性能调优(二):内存

Memory 一、spark内存简介二、堆内内存 or 堆外内存?三、如何用好RDD Cache?四、OOM怎么办?一、spark内存简介 spark 2.0后,基本上spark内存的管理就已经自动化了,内存出现问题基本上是一些数据问题。比如数据倾斜 spark.executor.memory是绝对值,指定了executor进程的JVM…

毕业设计 基于stm32舞台彩灯控制器设计app控制系统

基于stm32舞台彩灯控制器设计app控制1、项目简介1.1 系统构成1.2 系统功能2、部分电路设计2.1 STM32F103C8T6核心系统电路设计2.2 WS2812RGB彩灯电路设计3、部分代码展示3.1 控制WS2812显示颜色3.2 设置RGB灯的颜色,角度,亮度实物图1、项目简介 选题指导…

Pluma 插件管理框架

1. 概述 Pluma 是一个用 C 开发的可用于管理插件的开源架构,其官网地址为:http://pluma-framework.sourceforge.net/。该架构是个轻量级架构,非常易于理解。 Pluma 架构有以下基本概念: 1)插件的外在行为体现为一个…

JavaSE:集合框架

为什么用集合框架如果不知道需要多少对象,或者用较为复杂的方式存储对象,可以用集合框架集合框架包含的内容ArrayList实践.size().add(Object o) .add(int index, Object o).get(int index).contains(Object o).remove(Object o) .remove(int…

高精度电流源如何设计出来

随着科技的不断进度,高精度电流源在自动测试/测量以及各种应用中承担着重要的作用。然而想要更高精度的指标参数,就需要电流源仪器研发得更完善。众所周知,高精度电流源是电子实验中重要的测试仪器,能够广泛应用在电化学、电光源、…

深入理解Windows操作系统机制(一)

我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下Windows这个我们熟悉的不能再熟悉的系统。我们每天都在用Windows操作系统,但是其实我们每天直接在打交道的并不是Windows操作系统的内核,而是Windows操作系统的…

pytorch入门7--自动求导和神经网络

深度学习网上自学学了10多天了,看了很多大神的课总是很快被劝退。终于,遇到了一位对小白友好的刘二大人,先附上链接,需要者自取:https://b23.tv/RHlDxbc。 下面是课程笔记。 一、自动求导 举例说明自动求导。 torch中的…

Python 数据库连接 + 创建库表+ 插入【内含代码实例】

人生苦短 我用python Python其他实用资料:点击此处跳转文末名片获取 数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB.在TESTDB数据库中您已经创建了表 EMPLOYEEEMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。连…

前端css整理

如何水平垂直居中一个盒子? 1.已知高度:子盒子设置 display: inline-block; 父盒子设置 line-height 等于高度实现垂直居中;使用 text-align:center实现水平居中 2.父盒子 display:flex; align-items:center;justify-content:center; 3.定位&…

自动驾驶决策规划-控制方向学习资料总结(附相关资料的链接)

项目仓库 欢迎访问我的Github主页 项目名称说明chhCpp学习C仓库chhRobotics学习自动驾驶、控制理论相关仓库(python实现)chhRobotics_CPP学习自动驾驶、控制理论相关仓库(c实现)chhML 、chh-MachineLearning学习机器学习仓库chhRL学习强化学习仓库chhTricks存放一些有意思的t…

SpringSecurity的初次邂逅

【第一篇】SpringSecurity的初次邂逅 1.Spring Security概念 Spring Security是Spring采用 AOP思想,基于 servlet过滤器实现的安全框架。它提供了完善的认证机制和方法级的授权功能。是一款非常优秀的权限管理框架。 Spring Security是一个功能强大且高度可定制的身…

vue权限控制和动态路由

思路 登录:当用户填写完账号和密码后向服务端验证是否正确,验证通过之后,服务端会返回一个token,拿到token之后(我会将这个token存贮到localStore中,保证刷新页面后能记住用户登录状态)&#xf…

颠覆你的认知,业务同事都能开发软件,我简直无地自容……

经常看到网络鼓吹业务人员也能搭建应用,本是嗤之以鼻、半信半疑,但当这件事真实发生在自己身上时,竟觉得此言不虚? 一、背景 最近公司为了集成系统、提升扩展能力,引进了低代码平台JNPF,说个题外话&#…

终于,OpenAI开放ChatGPT API,成本直降90%,百万token才2美元

现在,第三方可以通过 API 将对话模型 ChatGPT 和语音转文本模型 Whisper 集成到自己的应用程序和服务中了。 来源丨机器之心 2022 年 11 月,OpenAI 上线 ChatGPT,自此以后,这个对话模型一路开挂。毫不夸张的说,与 Ch…

4道数学题,求解极狐GitLab CI 流水线|第4题:合并列车

本文来自: 武让 极狐GitLab 高级解决方案架构师 💡 极狐GitLab CI 依靠其一体化、轻量化、声明式、开箱即用的特性,在开发者群体中的使用率越来越高,在国内企业中仅次于 Jenkins ,排在第二位。 极狐GitLab 流水线有 4…

NFT Insider #87:The Sandbox 收购游戏开发工作室 Sviper,GHST 大迁徙即将拉开帷幕

引言:NFT Insider由NFT收藏组织WHALE Members(https://twitter.com/WHALEMembers)、BeepCrypto(https://twitter.com/beep_crypto)联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周…

洛必达求极限法则的通俗理解

洛必达求极限法则的通俗理解 洛必达法则是用于计算函数在某一点的极限的方法 它的基本思想是利用函数在该点的导数来逼近极限值。 洛必达法则成立的主要原因是因为它是利用函数的导数来逼近函数值的方法。当函数在某一点处存在导数时,函数的变化趋势可以由导数来…

24小时稳定性爆肝测试!国内外5款远程控制软件大盘点

本文目录前言一、ToDesk远程控制二、向日葵远程控制三、RayLink四、TeamViewer五、AnyDesk总结前言 不论你的职业是什么,从事互联网工作基本就离不开远程,从远程安装系统到远程搞设计,再到做服务器的调控,都需要靠远程来协助完成…