CSAPP——2.2整数表示

2023-11-18

两种整数:1.非负数(unsigned)2.负数、0、正数 T:补码 B:二进制 U:无符号数

1.整数数据类型:(unsigned) char、short、int、long、int32_t、int64_t….
2.无符号数的编码:假设位向量:x=[x[w-1],x[w-2],….,x[1],x[0]]
00 二进制转无符号数:B2U(x)=x[0]*2^0+x[1]*x^1+…+x[w-1]*2^(w-1)
00 很常规:U_MAX(w位)=2^(w)-1;(11…11) U_MIN=0;(00…00)
3.补码编码:最常见的有符号数的计算机表示方式。
00 二进制转有符号数:B2T(x)=-x[w-1]*2^(w-1)+x[0]*2^0+x[1]*2^1+…+x[w-2]*2^(w-2)
00 负数可看成其绝对值转为二进制后取反+1,最后再补上最高位的1
00 T_MAX(w位)=2^(w-1)-1(011…11) T_MIN(w位)=-2^(w-1)(100…00) (注意正数范围和负数范围是不对称的)
00 对于确定位数整型的打印:printf(“%” PRId32”\n”, bar); printf(“%” PRIu64”\n”, bar);….
00 有符号数的其他表示方法
0 ——1.反码:B2O(x)=-x[w-1]*(2^(w-1)-1)+x[0]*2^0+x[1]*2^1+…+x[w-2]*2^(w-2)
0 ——0 直接取反,高位补1(正数都一样,负数和补码的区别在于比补码大1)
0 ——2.原码:B2S(x)=(-1)^x[w-1]*(x[0]*2^0+x[1]*2^1+…+x[w-2]*2^(w-2))
0 ——这两种放法有一个奇怪的属性,数字0有两种不同的编码方式(100..00原)(111..11反)
4.有符号数和无符号数之间的转换(即显性转换和隐性转换)
00 处理同样字长的有符号数和无符号数之间相互转换:数值可能会变,但位不变(双方都能表示的数都是一样的)
00 T2U(x)=x+x[w-1]*2^w(即对于有符号数的正数不变,负数统一加上2^w)
00 U2T(u)=u-u[w-1]*2^w(对于〈=Tmax(2^(w-1)-1)的无符号数不变,大于的统一减去2^w)
5.C语言中的有符号数与无符号数:C未指定有符号数用哪种表示,但几乎所有的机器都用补码
00 通常一个数都是有符号的,要创建一个无符号数常量,必须加上后缀字符U(u),比如12345U
00 C允许无符号数和有符号数之间的转换,但没有精确规定方法,但大多数系统遵循的原则是底层的位保持不变
00 用printf输出时分别用%d,%u,%x以有符号十进制、无符号十进制和十六进制格式进行输出
00 当执行一个运算,如果一个运算数是有符号的,而另一个是无符号的,此时C会隐式的把有符号数转变为无符号数
00 ——(-1<0u)由于0是unsigned,所以会先把-1转变位无符号数即x^(w)-1,所以这个判断是错的
6.扩展一个数字的位表示(增大位数)
00 将一个无符号数转变为一个更大的无符号数,简单的在开头添0即可(零扩展)
00 将补码转变为一个更大的补码,则在开头添最高有效位的值(即非负数添0,负数添1)
7.截取数字(减少位数)
00 截断无符号位xmod2^k
00 截断补码数值:与无符号数一样,只是将截断后最高位转换为符号位
8.当把字看成位的集合而不是数值时,无符号位很有意义,比如每个位存放bool的,地址自然数自然是无符号的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSAPP——2.2整数表示 的相关文章

  • CSAPP Lab3- bufbomb

    实验目标 xff08 1 xff09 掌握函数调用时的栈帧结构 xff08 2 xff09 利用输入缓冲区的溢出漏洞 xff0c 将攻击代码嵌入当前程序的栈帧中 xff0c 使得程序执行我们所期望的过程 实验代码 xff08 1 xff09
  • csapp-01:从程序员的角度去了解计算机系统的工作原理

    写在开头 xff1a 本人非科班 xff0c 之前没读过 xff0c 只听说是本好书 xff0c 硬着头皮花了四天时间通读了一遍 xff0c 书上画得密密麻麻的 xff0c 尤其是在虚拟内存这一章到处写满注解 xff0c 只能说这本书的确不
  • CSAPP malloclab实验

    书本配套实验地址 构造一个分配器是一件富有挑战的任务 设计空间很大 有多种块格式 空闲链表格式 以及放置 分割和合并策略可供选择 另一个挑战就是我们经常被迫在类型系统的安全和熟悉的限定之外编程 依赖于容易出错的指针强制类型转换和指针运算 这
  • CSAPP第二章课后作业题

    include
  • 浮点数和整数之间的转换

    当一个整数int i 12345被强制转换为一个FLOAT型变量 float f float i 假设sizeof int 32 float为单精度 sizeof float 32 那么i 12345 十进制 000000000000000
  • CSAPP(第三版)第二章答案

    2 30 补码发生溢出返回0 否则返回1 int tadd ok int x int y int sum x y if x gt 0 y gt 0 sum lt 0 x lt 0 y lt 0 sum gt 0 return 0 else
  • LeetCode146- LRU 缓存

    class LRUCache public struct Node int key val Node left right Node int key int val key key val val left NULL right NULL
  • 《CSAPP》(第3版)答案(第二章)(一)

    CSAPP 答案 第二章 一 P55 include
  • 程序是如何从编辑到执行的——我的初步理解

    目录 1 预处理 2 编译 3 汇编 3 1 机器码的格式 3 2 编码过程 4 链接 5 取指 6 译码 7 执行 8 访存 9 写回 10 更新PC 今天来谈谈 一句代码 是如何从被编辑到被执行的 以下为本人在阅读相关书籍资料后的初步理
  • CSAPP:DataLab详细解析

    做题的时候看了好多博客 一点一点更深入的了解 学习 不得不说lab真的很好 学到很多 做题准备我已经在上一个博客提到了 建议写之前看一下README 1 bitXor 运用 和 实现x y 这里可以用一个真值表 x y x y 0 0 0
  • 【CSAPP】Binarybomb 实验(phase_1-6+secret_phase)

    Binarybomb 实验 phase 1 6 secret phase 实验内容 一个 binary bombs 二进制炸弹 下文将简称为炸弹 是一个Linux可执行C程序 包含了7个阶段 phase1 phase6和一个隐藏阶段 炸弹运
  • CSAPP第三版运行时打桩Segmentation fault

    CSAPP第三版7 13 3节提到了运行时打桩机制 它可以在运行时将程序中对共享库函数的调用进行截获 替换为执行自己的代码 这个机制基于动态链接器的LD PRELOAD环境变量 如果LD PRELOAD环境变量被设置为一个共享路径名的列表
  • CSAPP-BinaryBomb实验

    目录 一 实验目的与要求 二 实验原理与内容 三 实验过程与结果 1 程序编码 汇编 2 拆解过程 Phase 1 Phase 2 Phase 3 Phase 4 Phase 5 Phase 6 Secret phase 一 实验目的与要求
  • csapp 第一章 计算机系统漫游

    计算机系统由硬件和系统软件组成 共同工作来运行应用程序 include
  • 运行时链接

    基本概念 运行时链接 是在程序运行时 而非编译时或加载时 将程序代码与其依赖的库代码进行链接的过程 动态链接在程序启动时或实际运行过程中通过API函数完成 这种方式的主要优点是它允许程序在运行时加载和卸载不同的库模块 从而实现更高的模块化和
  • CSPP 数据的机器级表示

    寄存器 intel x86 64 调用寄存器与被调用寄存器 因为要保证在调用函数返回后寄存器的值恢复为未被调用之前 所以下面的例子运用pushq指令保存被调用寄存器rbx的值 函数 gcc产生的指令指示操作数的大小 寄存器的作用 rax存储
  • CSAPP Lab4- PerfLab

    代码优化 typedef struct unsigned short red R value unsigned short green G value unsigned short blue B value pixel 图像用一维数组表示
  • x86-64 汇编基础 ---- 记读 《CS: APP》

    x86 64 汇编基础 记读 CS APP 通常情况下 使用现代的优化编译器产生的代码至少与一个熟练的汇编语言程序员手工编写的代码一样有效 1 看懂汇编码 1 汇编码的格式 ATT格式 这是GCC OBJDUMP和其它一些工具的常用格式 由
  • 计算机系统课程 笔记总结 CSAPP第七章 链接(7.1-7.13)

    GitHub计算机系统CSAPP课程资源 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理 2 1 2 2 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理 2 3 2 4 计算机系统课程 笔记总结 CSAPP第三章
  • 程序的链接

    程序的链接是一个非常实际的问题 他建立在很实际的问题之上 不从程序员的角度去思考问题 则是从软件的角度去思考如何复用错综复杂的代码 因为 这个问题的本质是我们没有给底层的硬件一个完整的可按顺序执行的程序 我们在前几章虽然讨论了指令流的问题

随机推荐

  • 尝试爬取LOL英雄技能属性--01

    首先我们找到一个LOL英雄的全部展示的页面 http lol kuai8 com hero 恕瑞玛 your king has return hah hah金克丝长得不错 点击一下http lol kuai8 com hero 3 html
  • Arduino ESP32自平衡小车制作实现(不需编码器)

    1 mpu6050陀螺仪角度方向和静态平衡角度测试 说明 1 陀螺仪补偿值的计算 试时提前用calcGyroOffsets true 函数计算出 补偿值 知道mpu6050的补偿值后用setGyroOffsets 直接设置补偿值 避免每次开
  • 生成指定长度的随机字符串(数组和字母组合)

    brief getRandomCode 生成指定长度的随机字符串 数组和字母组合 param codelength 指定字符串长度 return 生成的字符串 QString getRandomCode int codelength con
  • 通过git clone批量下载huggingface模型和数据集

    目录 前言 一 配置git全局代理 可选 1 配置http或socks5代理 2 取消代理配置 二 下载步骤 问题 前言 想要下载huggingface的模型 却发现只能一个个文件下载非常不方便 又或者官方提供的api不好用或者下载不下来
  • 浏览器有哪些进程?浏览器进程,渲染进程,网络进程,渲染进程有哪些线程?

    浏览器进程 渲染进程有哪些线程 在浏览器中打开两个页面 会开启几个进程 1个浏览器进程 1个网络进程 一个GPU进程 通常一个Tab页对应一个渲染进程 但有其它情况 1 如果页面中有iframe的话 iframe也会运行在单独的进程中 2
  • 实现SSM简易商城项目的登录注册功能

    实现SSM简易商城项目的登录注册功能 项目背景介绍 在互联网时代 电商行业蓬勃发展 越来越多的人开始关注电子商务 为了实现一个简易商城项目 我们选择了SSM框架作为项目的基础架构 SSM分别代表了Spring SpringMVC和MyBat
  • 睿智的目标检测24——Keras搭建Mobilenet-SSD目标检测平台

    睿智的目标检测24 Keras搭建Mobilenet SSD目标检测平台 更新说明 学习前言 什么是SSD目标检测算法 源码下载 SSD实现思路 一 预测部分 1 主干网络介绍 2 从特征获取预测结果 3 预测结果的解码 4 在原图上进行绘
  • 【编译部署】使用Visual Studio编译Linux平台程序/动态库(远程连接)

    文章目录 1 背景 2 使用的环境 3 配置步骤 3 1 安装 Visual Studio 工具集 3 2 创建解决方案 3 3 Linux 端准备工作 3 4 测试编译和运行 5 添加附加包含和附加库 1 背景 由于日常在 Windows
  • 论文笔记:Hankel Matrix Factorization for Tagged Time Series to Recover Missing Values during Blackouts

    ICDE 2019 0 摘要 在执行时间序列分析时 恢复时间序列中的缺失值至关重要 而本文研究的blackouts问题 即在一定时期内丢失所有数据 是最紧迫和最具挑战性的问题之一 现有的时间序列缺失值恢复方法无法正确处理这个问题 但在这项工
  • 数组和指针笔试题解析之【数组】

    目录 前言 1 一维数组 2 字符数组 2 1题型一 2 2题型二 2 3题型三 3 二维数组 前言 1 数组名的意义 sizeof 数组名 这里的数组名表示整个数组 计算的是整个数组的大小 单位是字节 数组名 这里的数组名表示整个数组 取
  • win10连接蓝牙耳机_蓝牙耳机兼容性是什么?哪个牌子蓝牙耳机连接稳定续航高_...

    2020年10月21日 10 08 作者 网络 编辑 王动 不论我们何时走在街上 总能看到有人佩戴着耳机摇头晃脑 似乎沉浸在音乐的世界里无法自拔 但在众多手机去掉的耳机接口后 大多数人开始将目光投向蓝牙耳机 希望能够重获快乐 只是 并非所有
  • pyltp的本地安装

    0 电脑配置 win 8 1 64位操作系统 python 2 7 1 使用pip安装pyltp 运行安装命令 pip install pyltp 第一次失败 缺少Visual C 9 0 参考资料 https blog csdn net
  • Android,页面3秒自东跳转和点击跳转显示

    先打开ADT程序创建 创建文件 如图 命名为Day01 注意大小写 注意改名字不要重复 在res layout中找到 下面第一个是视图 第二个是对视图进行编辑点击第二个进行编辑 把
  • 多线程面试总结

    总结 每个对象有一个监视器锁monitor 线程进入同步方法时尝试获取monitor的所有权 其他线程进入阻塞状态 该线程释放monitor的所有权后其他线程重新尝试获取monitor的所有权 只能有一个线程对同步监视器加锁 1 多线程的问
  • React报错误及其解决方案

    1 Import in body of module reorder to top import first 解决方案 import开头代码写在最前面
  • 微信支付之扫码支付相关代码(Java)(转载)

    最近开发网站过程 需要引入支付过程 第三方支付中最火的莫过于支付宝支付和微信支付 下边借助微信支付官网上的文档 写一下接入微信支付之扫码支付的流程 相对支付宝支付而言 微信支付的开发文档写的相当的low demo写的一点都不简洁 下边写一下
  • 如何创建http端口监听_比Minikube更快,使用Kind快速创建K8S学习环境

    简述 K8S 如火如荼的发展着 越来越多人想学习和了解 K8S 但是由于 K8S 的入门曲线较高很多人望而却步 然而随着 K8S 生态的蓬勃发展 社区也呈现了越来越多的部署方案 光针对生产可用的环境就有好几种部署方案 对于用来测试和学习环境
  • PHP秒杀系统 高并发 高性能的极致挑战 下载

    第1章 课程介绍 秒杀系统在各种网站和应用中经常会用到 本课程从基本的系统设计和基础功能开始教导大家用PHP来设计和实现秒杀系统 并且为海量并发提供更高级的技术方案和实现手段 第2章 系统技术选型分析 本章节需要大家掌握基础的LNMP平台的
  • RAC Failover三种方式

    1 Client Side Connect Time Failover 1 1 在用户端tnsname中配置了多个地址 用户发起连接请求时 会先尝试连接地址表中的第一个地址 如果这个连接尝试失败 则继续尝试使用第二个地址 直至连接成功或者遍
  • CSAPP——2.2整数表示

    两种整数 1 非负数 unsigned 2 负数 0 正数 T 补码 B 二进制 U 无符号数 1 整数数据类型 unsigned char short int long int32 t int64 t 2 无符号数的编码 假设位向量 x