| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 《深入理解计算机系统》阅读笔记(持续更新) -> 正文阅读 |
|
[C++知识库]《深入理解计算机系统》阅读笔记(持续更新) |
第二章2.1 信息存储2.1.3 寻址和字节顺序· 字长决定系统的虚拟地址空间最大大小 · 多字节对象都被存储为连续的字节序列,对象的地址为所使用字节中最小的地址 · 最高有效位 & 最高有效字节 · 大端法:最高有效字节放在最前面 · 当前程序计数器的值即为下一条将要执行的指令的地址
? ? ? ? 函数功能:打印程序输入对象的字节表示,以16进制方式输出,变量len确定对象使用的字节数
? ? ? ? 上述代码将int_pointer定义为一个指向int的指针 · 格式化输出规定: %d十进制整数 ? ?%f浮点数 ? ?%c字符 ?%u无符号数 ??? %x十六进制 2.1.4 表示字符串· c语言中字符串被编码为一个以null字符结尾的字符数组,终止字符的16进制表示为0x00 2.1.5 表示代码· 不同的操作系统有不同的编码规则,因此二进制代码不兼容 2.1.7?位级运算
2.1.8 逻辑运算
? ? ? ? 逻辑运算与位级运算不同的地方:对于逻辑运算,如果对第一个参数求值就能确定表达式的结果,逻辑运算符就不会对第二个参数求值 2.1.9 移位运算? ? ? ? 有符号数——算数右移,逻辑左移 ? ? ? ? 无符号数——逻辑右移,逻辑左移 2.2 整数表示2.2.4 有符号数和无符号数之间的转换· 强制类型转换的结果:保持二进制位值不变,数值可能改变 · 有符号数到无符号数的隐式转换,会导致错误和漏洞 2.2.5 c语言中有符号数和无符号数· 如果一个运算数有符号而另一个运算数无符号,则c语言会隐式的将有符号数转换为无符号 2.2.6 扩展一个数字的位表示? ? ? ? 无符号——零扩展 ? ? ? ? 有符号——符号扩展 2.2.7 截断数字? ? ? ? 截断无符号数:x‘=x mod 2^k,直接抹去前面若干位 ? ? ? ? 截断有符号数:x'=B2T(x?mod?2^k),抹去前面若干位后,将最高位视为符号位? ? ? ?? 2.3 ?整数运算2.3.1 无符号运算· 无符号加法计算步骤:1. 位运算 ? ? ? ?2. 截断为k位 ? ? ? ?3. 视为无符号数 · 算数溢出:完整的整数运算结果不能放到规定的数据类型字长限制中。 · 无符号求反 2.3.2 补码运算· 补码加法:1. 位运算 ? ? ? ?2.截断 ? ? ? ?3.视为补码 · 补码加法溢出:正溢出/正常/负溢出 · 两个数的补码加法和无符号加法有相同的位级表现 · 检测补码加法中的溢出: ? ? ? ? 1?? 正溢出:x>0 && y>0 && x+y<=0 ? ? ? ? 2?? 负溢出:x<0 && y<=0 && x+y>=0 · 补码的非: · 快速求补码的非的方法:对x的每一位取补,再对结果加1 2.3.4 无符号乘法 2.3.5 补码乘法 ???????? ? ? ? ? 无符号和补码乘法的位级表示是等价的 2.3.6 乘以常数· 与2的幂相乘的无符号乘法:
????????高w位即丢弃,低位用0补齐 · 与2的幂相乘的补码长乘法: ? ? ? ? 乘法的优化1: ? ? ? ? ?乘法的优化2: ? ? ? ? 形式A: ? ? ? ? 形式B: ? ? ? ????????? 2.3.7 除以2的k次幂? ? ? ? 无符号和补码分别使用逻辑移位和算数移位达成目的 · 除以2的幂的无符号除法 ? ? ? ? x>>k? · 除以2的幂的补码除法+向下取整 ? ? ? ? x>>k · 除以2的幂的补码除法+向上取整 ? ? ? ? (x+(1<<k)-1)>>k |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/19 19:37:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |