惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Cloudflare Blog
博客园_首页
J
Java Code Geeks
A
About on SuperTechFans
人人都是产品经理
人人都是产品经理
量子位
C
Check Point Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 三生石上(FineUI控件)
L
LangChain Blog
N
Netflix TechBlog - Medium
Hugging Face - Blog
Hugging Face - Blog
B
Blog
美团技术团队
Microsoft Security Blog
Microsoft Security Blog
P
Proofpoint News Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
宝玉的分享
宝玉的分享
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
Last Week in AI
Last Week in AI

博客园 - marsggbo

GPU 算力没在算模型,在等 CPU 发号施令——CUDA Graph 是怎么解决这件事的 推理模型做 decode,GPU 只有 3% 在干活——SparseSpec 把稀疏 Attention 变成了 2.1× 加速 vllm v1 源码精读(三):KV Cache 管理、Chunked Prefill 与异步架构 vllm v1 源码精读(二):generate() 计算流——model.forward() 在哪里被调用? vllm v1 源码精读(一):为什么要重写,以及 LLM() 这行代码背后发生了什么 160 个 AI 比 80 个效果更差?这篇论文量化了一件大家隐约知道但说不清楚的事 ICLR'25 | SWIFT:不训练不搜索,Self-Speculative Decoding 的即插即用版 2025 | SSD for dLLMs:扩散语言模型也能用推测解码,最高 3.46× arXiv'26 | SSD for ASR:用 CTC 编码器打草稿,LLM 验证,语音识别也能推测解码 WWW'26 | SS-MoE:显存墙下的 MoE 推理,Self-Speculative Decoding 怎么救场? EMNLP'23 | 不用额外模型,LLM 自己给自己加速——Self-Speculative Decoding 原理详解 ACL'24 | LayerSkip:Meta 把 Self-Speculative Decoding 从头训到尾,直接干到 2.16× 从图像到文本:Diffusion 模型原理全解——数学、结构、训练、推理一次讲清 贝叶斯优化从零推导:从「我对这个函数有个猜测」到自动调参 长音频转写慢 10 倍,99% 的 Attention 在白做功——MURMUR 如何破解这道难题 2026 | dLLM-ASR 让语音识别推理快 4.44 倍,还不掉精度 公司里那个一言不发的马尾辫大叔,现在被装进了你的 AI agent 里 SpecASR:ASR 专属 Speculative Decoding,让 LLM 语音识别快 3.79 倍 COLM'25 | PredGen:你还在说话,LLM 已经想好怎么回了 LLM agent 为什么不稳?问题可能不在模型,在 harness Meta-Harness:让 LLM 自己搜索最优 harness,模型不动,性能白涨 从零理解 ASR:音频基础、Qwen3-ASR 架构,以及离线 vs 流式推理原理 arXiv'26 | LLM Agents 让群体信念变得可编程:当 AI 开始系统性操控舆论 巴西「主权大模型」翻车:当模型可以随便融合,怎么证明它偷了你的权重? 进阶篇 | 不靠人工设计,让遗传算法自己进化出 SOTA 的 LLM 剪枝指标 说人话:一文搞懂现在火热的 LLM agent 自进化原理 ICML'26 | Transformer 真的需要三个投影矩阵吗?Q-K=V 让 KV Cache 直接砍半 UPenn & Meta | NF-CoT:当 LLM 的思维链不再是文字,而是连续概率流 arXiv'26 | 为什么你的多智能体系统越加 agent 越慢?DeLM 用去中心化解了这个矛盾 arXiv'26 | Self-Harness:让 Agent 自己改自己的 harness,pass rate 最高翻倍
二进制中为什么负数是正数取反再加一
marsggbo · 2024-07-03 · via 博客园 - marsggbo

二进制中的负数表示有一个重要的概念是补码,它是由对应正数二进制取反后再加 1 得到的。但是经常忘记为什么要这么表示,这里结合 chatgpt 解释做个简单的总结。

补码(Two's Complement)设计的逻辑来自于简化和统一计算机中有符号数的表示和运算。其设计逻辑可以追溯到计算机科学中的一些基本需求和目标。以下是补码设计逻辑的详细解释:

1. 有符号数的表示

目标: 在计算机中,需要一种方法来表示正数和负数,同时要确保运算的简便性和一致性。

2. 符号位的使用

思路: 使用最高位(最左边一位)作为符号位。0表示正数,1表示负数。这是因为使用最高位作为符号位可以直接决定数的正负,同时剩余的位可以用于表示数值部分。

3. 简化运算

需求: 希望计算机能够使用相同的电路(主要是加法器)来处理加法和减法。

实现:

  • 对于加法,直接进行二进制加法。
  • 对于减法,将减法转换为加法,通过加上一个负数来实现。

4. 负数的表示

挑战: 如何表示负数使得上述需求能够被满足?

这里我们可以假设给定一个正数,例如 5 的8位二进制是 0000 0101,那么我们该如何设计-5 呢?

很显然,最重要想实现的目的是 5+-5=0,也就是 0000 0101 + x = 0000 0000, 手动算一下减法,x= 1111 1011。观察一下规律你会发现,x 其实就是 0000 0101取反再加 1。

整理一下,如下:

补码的引入:

  • 按位取反加1: 补码的核心思想是,将一个数的负数表示为该数的按位取反再加1。

例如,对于8位系统中的数字:

  • 正数 5 的二进制表示是 0000 0101。
  • 负数 -5 的表示过程是:
    1. 将 5 的二进制按位取反:1111 1010
    2. 加1:1111 1011
      因此,-5 的补码表示是 1111 1011。

5. 运算一致性

验证: 通过补码表示,负数可以直接参与加法运算,而无需额外的减法电路。

例如,计算 5 + (-5):

  • 5 的二进制表示是 00000101
  • -5 的补码表示是 11111011

二者相加:

  00000101
+ 11111011
  ----------
  100000000  (由于是8位系统,只取低8位,结果为 00000000)

结果为 00000000,表示0,运算正确。

6. 统一零的表示

优势: 使用补码表示法,零只有一种表示形式,即 00000000,这简化了零的处理逻辑,避免了符号-绝对值表示法中正零和负零的问题。

7. 溢出检测简化

溢出检测: 在补码表示法中,溢出可以通过简单的逻辑操作检测到。例如:

  • 两个正数相加结果为负数
  • 两个负数相加结果为正数

这可以通过检查结果的符号位来实现。

设计逻辑总结

补码的设计逻辑旨在简化和统一计算机中有符号数的表示和运算。其主要优势包括:

  • 符号位的直观使用
  • 负数的补码表示使加法和减法运算一致
  • 零的唯一表示形式
  • 简化的溢出检测

通过这些设计,补码有效地解决了在计算机中处理有符号数的各种挑战,成为现代计算机系统中广泛采用的表示方法。