gpt4 book ai didi

binary - 什么是 “two' 的补码”?

转载 作者:行者123 更新时间:2023-12-03 03:56:29 25 4
gpt4 key购买 nike

我正在学习计算机系统类(class),并且一直在挣扎,部分原因是 two's complement 。我想理解它,但我读过的所有内容都没有为我提供完整的图片。我读过Wikipedia article以及其他各种文章,包括 my text book .

什么是二进制补码,我们如何使用它以及它如何在强制转换(从有符号到无符号,反之亦然)、按位运算和移位运算等操作期间影响数字?

最佳答案

Two's complement是一种存储整数的巧妙方法,因此常见的数学问题很容易实现。

要理解,您必须考虑 binary 中的数字。 .

它基本上说,

  • 对于零,请使用全 0。
  • 对于正整数,开始向上计数,最多为 2(位数 - 1)-1。
  • 对于负整数,执行完全相同的操作,但交换 0 和 1 的角色并倒数(因此不要从 0000 开始,而是从 1111 开始 - 这是“补数”部分)。

让我们尝试使用 4 位的迷你字节(我们将其称为 nibble - 1/2 个字节)。

  • 0000 - 零
  • 0001 - 一
  • 0010 - 两个
  • 0011 - 三
  • 01000111 - 四到七

这就是我们所能取得的积极成果。 23-1 = 7。

对于底片:

  • 1111 - 负数
  • 1110 - 负二
  • 1101 - 负三
  • 11001000 - 负四到负八

请注意,对于负数,您会获得一个额外值 (1000 = -8),而对于正数则不会。这是因为 0000 用于表示零。这可以被认为是 Number Line计算机数量。

区分正数和负数

这样做时,第一位将扮演“符号”位的角色,因为它可用于区分非负十进制值和负十进制值。如果最高有效位是1,则二进制可以说是负数,如果最高有效位(最左边)是0,则可以说小数值非负。

"Sign-magnitude"负数只是将正数的符号位翻转,但这种方法必须处理 1000 的解释(一个 1 后跟所有 0 s) 为“负零”,这令人困惑。

"Ones' complement"负数只是其正数的位补,这也会导致与 1111(全一)混淆的“负零”。

除非您的工作非常接近硬件,否则您可能不必处理“补码”或“符号数值”整数表示形式。

关于binary - 什么是 “two' 的补码”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1049722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com