当前位置: 首页 > news >正文

[负数,补码]

早先再CSDN写过一篇文章:最近在看python,再次复习一下:
硬件里只有固定宽度的二进制位,负数不是“单独的东西”,而是用补码(二进制的两补)来编码在同样的位宽里。核心点如下。

两补表示

  • 有符号整数用两补表示;最高位是“符号位”但本质上有权值。
  • 对于 n 位的两补数,位向量 b[n-1] ... b[0] 的数值是:
    • value = -b[n-1]*2^(n-1) + Σ_{i=0..n-2} b[i]*2^i
  • 取值范围:[-2^(n-1), 2^(n-1)-1];比如 8 位是 [-128, 127]

负数如何得到

  • 计算规则(两补):对正数的二进制按位取反,再加 1。
  • 等价规则:-x 的位模式是 2^n - x(在 n 位宽下取模)。
  • 例子(8 位):
    • +500000101
    • 取反 → 11111010,加 1 → 11111011,所以 -511111011
    • -111111111(因为 256 - 1 = 255
    • 最小值 -12810000000;最大值 +12701111111

为什么用补码

  • 加法器只需一种电路就能完成加减(减法变加法)。
  • 溢出“环绕”行为统一,最高位参与权值计算,符号扩展自然成立。

有符号 vs 无符号

  • 无符号:全位都是正权值,范围 [0, 2^n - 1]
  • 有符号(两补):最高位是负权值,范围 [-2^(n-1), 2^(n-1)-1]
  • NumPy:'iN' 是有符号(如 i4=int32),'uN' 是无符号(如 u4=uint32)。

与 NumPy/Pandas 的关系

  • 你在 l02.py 里用的 dtype=[('a','i4'),('b','f4'),('c','U10')]
    • 'a'int32(两补),'b'float32'c' 是最多 10 个 Unicode 字符。
  • 转成 DataFrame 时,a 列保持 int32b 列是 float32c 列显示为 <U10object(取决于版本)。

示例代码

import numpy as npdef bin8(x):# 以 8 位二进制显示底层位模式(统一用无符号视图)return format(np.uint8(x), '08b')print("8 位两补表示示例:")
print("+5  ->", bin8(5))              # 00000101
print("-5  ->", bin8(-5))             # 11111011
print("-1  ->", bin8(-1))             # 11111111
print("+127->", bin8(127))            # 01111111
print("-128->", bin8(np.int8(-128)))  # 10000000# 有符号 vs 无符号赋值与环绕
a_int8 = np.int8(-1)
a_uint8 = np.uint8(-1)    # 取模 256,得到 255
print("int8(-1)  数值:", a_int8, "位模式:", bin8(a_int8))    # -1, 11111111
print("uint8(-1) 数值:", a_uint8, "位模式:", bin8(a_uint8))  # 255, 11111111# 溢出(环绕)示例:int8 的 127 + 1 -> -128;uint8 的 255 + 1 -> 0
print("int8 溢出: 127 + 1 =", np.int8(127) + np.int8(1), "位模式:", bin8(np.int8(127) + np.int8(1)))
print("uint8 溢出: 255 + 1 =", np.uint8(255) + np.uint8(1), "位模式:", bin8(np.uint8(255) + np.uint8(1)))# 符号扩展示例:从 8 位到 16 位
v8 = np.int8(-5)
v16 = v8.astype(np.int16)
print("符号扩展 int8(-5) -> int16:", v16)
print("16 位位模式:", format(np.uint16(v16), '016b'))  # 1111111111111011
http://www.jsqmd.com/news/31389/

相关文章:

  • centos7安装Elasticsearch Service Sink Connector【CDC实战系列十】
  • 2025年诚信的PU线条厂家TOP5推荐,PU线条厂家全解析
  • 2025年度阀门涂装制造厂排名:5家的阀门创新涂装厂家推荐
  • Java-143 深入浅出 MongoDB NoSQL:MongoDB、Redis、HBase、Neo4j应用场景与对比 - 详解
  • 2025年代办注册公司哪家口碑好?代办注册公司找哪家?
  • 内网即时通讯软件新选择:吱吱企业即时通讯软件的安全与协作一体化
  • leetcode热题100-49:字母异位词分组
  • 2025年哈尔滨PU线条供应商推荐:靠谱的PU线条企业全解析
  • 2025年有效减肥训练机构推荐,瘦身训练课程与间歇性减肥训练企业全解析
  • 工业CMOS相机的原理及基础知识
  • 东北区域PU线条设计服务TOP5推荐,PU雕花线条与PU顶角线企业全解析
  • 2025年北京一对一上门辅导机构年度排名:龙文教育集团一对一上门辅导推荐
  • 2025 年散热器厂家最新推荐榜:涵盖电子 / 插片 / 型材 / 铲齿 / 新能源等多品类,权威测评精选实力企业
  • 2025 年过滤器厂家最新推荐榜单:品牌综合实力测评发布,五大优质企业脱颖而出润滑油过滤器/自清洗过滤器/全自动除污过滤器/双联过滤器/烛式过滤器厂家推荐
  • docker学习笔记详记 - 教程
  • Windows 11 常规设置
  • 浏览器共享存储导致身份标识冲突
  • 2025年激光干涉仪生产厂家权威推荐榜单:球杆仪/激光雷达/悬臂三坐标测量机源头厂家精选
  • 详细介绍:计算机网络第四章(10)——网络层《路由算法+路由协议》
  • 2025 年商用直饮机租赁公司最新推荐榜,技术实力与市场口碑深度解析,聚焦优质品牌综合表现
  • 2025母婴用品双11营销解码与AI应用洞察报告|附40+份报告PDF、数据、绘图模板汇总下载
  • 2025年纯棉方巾定做厂家权威推荐榜单:男士方巾/纯棉小方巾/女士方巾源头厂家精选
  • 2025数证杯初赛
  • 2025 年最新推荐岗亭生产厂家口碑排行榜:成品 / 移动 / 售货岗亭品牌实力测评与优选指南
  • Mybatisplus 如何将已经有值的字段设置为空值null
  • 2025 年上海商用净水器租赁公司最新推荐榜,技术实力与市场口碑深度解析,助力精准选品工厂,事业单位,办公净水器租赁企业
  • 云原生周刊:KubeVela 1.10.4 与 k0s 1.34 发布
  • 2025年尼龙拉链供货厂家权威推荐榜单:树脂拉链/金属拉链/隐形拉链源头厂家精选
  • 详细介绍:MySQL主从复制:数据同步实战指南
  • wzy