标签搜索

码制

wehg489
2026-07-30 / 0 评论 / 2 阅读 / 正在检测是否收录...

为什么需要码制?

计算机只认识0和1,但我们需要表示正数和负数。码制就是用来解决"如何在计算机中表示有符号数"的问题。

三种码制的通俗理解

1.原码 - "最直接的想法"

就像我们日常写数字一样直接:

最高位表示符号:0=正数,1=负数
其余位表示数值的绝对值
例子(8位二进制):

+5 的原码:00000101
-5 的原码:10000101
问题:计算时很麻烦!
00000001 (+1)

  • 10000001 (-1)
    = 10000010 (-2) ❌ 结果错误!

2.反码 - "第一次改进"
负数的反码 = 原码的数值位取反(符号位不变)

例子:

+5 的反码:00000101(与原码相同)
-5 的反码:11111010(原码10000101取反)
改进:计算比之前好一点,但仍有问题

00000001 (+1的反码)

  • 11111110 (-1的反码)
    = 11111111 (-0的反码) ❌ 出现了"-0"!
  1. 补码 - "最终解决方案" ⭐
    负数的补码 = 反码 + 1

例子:

+5 的补码:00000101(与原码相同)
-5 的补码:11111011(反码11111010 + 1)
神奇之处:
00000001 (+1的补码)

  • 11111111 (-1的补码)
    = 00000000 (0的补码) ✅ 结果正确!

补码的核心优势:

统一了0的表示:没有+0和-0的问题
简化了运算:加减法都可以用加法器完成
增加了表示范围:能多表示一个负数(-128)

为什么程序员要理解这些?

理解整数溢出问题
调试底层程序时查看内存数据
理解位运算操作
面试常考题
现代计算机:

所有整数运算都使用补码
浮点数使用IEEE 754标准
字符使用Unicode编码

0

评论

博主关闭了当前页面的评论
歌曲封面
0:00