【问题标题】:What is the difference between signed and unsigned binary有符号和无符号二进制有什么区别
【发布时间】:2017-07-25 00:36:07
【问题描述】:

我一直在阅读一些网站,但没有一个对我有意义。有符号和无符号二进制它们与有符号和无符号变量相同。如果您能提供帮助,我会很高兴:)

【问题讨论】:

  • 有符号和无符号二进制是指依赖于所表示的二进制符号的转换。而对于变量,它指的是变量是否能够存储负值。
  • 但是有符号和无符号二进制有什么区别?
  • 我迟到了,但请注意:如果我看到“有符号/无符号二进制”,我会想到 signing binaries (e.g. exe/dlls) 而不是变量的数据类型。

标签: binary unsigned signed


【解决方案1】:

有符号和无符号二进制是指依赖于表示的二进制符号的转换。而对于变量,它指的是变量是否能够存储负值。

在二进制中表示有符号位:我们说1 是负数,0 是正数。所以如果你看到第二个例子,第一位是 1 是什么意思? - 对,它是否定的。而且我们不包括它来转换base2到base10。

例如:1001 在无符号位(不关心符号):9

例如:1001 In 有符号位(MSB 为符号位):-1

对于变量,它很可能存储负数。

MSB:最高有效位

【讨论】:

  • 但是有符号和无符号二进制有什么区别?
  • 阅读答案你应该知道差异。
  • 不好意思不好意思,还是没听懂?
  • 完成。你可能想检查一下。
【解决方案2】:

“已签名”指示符表示该项目可以包含正值或负值。 “无符号”不区分正值和负值。有符号/无符号变量可以引用任何数字数据类型(例如二进制、整数、浮点数等)。每种数据类型都可以进一步定义为有符号或无符号。

例如,一个 8 位有符号二进制可以保存从 0 到 127 的值,包括正数和负数(1 位用于符号,7 位用于值),而 8 位无符号二进制可以保存值从 0 到 255(不区分该值是正数还是负数,尽管通常假定为正数)。

有符号二进制是有符号变量的特定数据类型。

希望有帮助!

【讨论】:

  • 有符号可以代表正数和负数
  • @R.M.R.是的,有符号可以表示正数和负数。
  • 你能再解释一下 unsigned 吗?抱歉有点尴尬,我还不太明白。
  • 无符号表示值中没有任何内容表明该数字被认为是正数还是负数 - 它只是一个没有符号的值(符号 =“-”或“+”)。通常,它被认为是一个正值。
  • 我之前的评论可能描述了无符号二进制文件或无符号变量。恐怕这可能会令人困惑,但无符号二进制文件可能是一种无符号变量(作为一个比喻,这类似于说史密斯奶奶的苹果是一种苹果。“苹果”是一个比“苹果”更大的类别更具体的“史密斯奶奶苹果”)。
【解决方案3】:

“有符号”变量意味着该值使用它的最高有效位(左边的最后一位)来保存正值或负值,这就是我们所说的“有符号位”。 “无符号”变量没有,而是最高有效位只是 2 的下一个幂。

我们将一个为 1 的有符号位称为负数,而对于无符号数,该位将属于常规二进制位规则。

例如,最大值如下所示:
Unsigned Char 0b11111111 (0xFF in hex) = 255 in decimal, (128+64+32+16+8+4+2+1 = 255)
有符号字符 0b11111111(十六进制的 0xFF)= 十进制的 -127,(-1 * (64+32+16+8+4+2+1) = - 127)

另外,您可能会在代码中看到:
无符号字符 0b10000001(十六进制的 0x81)= 十进制的 129,(128 + 1 = 129)
有符号字符 0b10000001(十六进制的 0x81)=十进制的 -1,(-1 * 1)

(注意:char 是一个字节,这意味着它有八位二进制可以更改)
(对于任何想知道的人,0b 表示该位是二进制,0x 表示它是十六进制)

【讨论】:

    【解决方案4】:

    这取决于职位或情况。例如,在汇编中,我们要从内存中加载具有值的字节:0xFF(~11111111 in binary)。 $s3 有这个值的地址。

    • 使用 func lbu( load byte unsignal ),它只允许加载 unsignal 二进制:lb rt, offset(rs)。

      • lbu $s0, 32($s3) : lbu 将加载值和 0-extend 到 32 位 0x000000FF,它被解释为 255。
    • 使用 func addi,它允许加载信号二进制:lb rt,offset(rs)。
      • lb $s0, 32($s3) : lb 将加载值并 1-extend 到 32 位 0xFFFFFFFF 被解释为 -1。

    【讨论】:

      猜你喜欢
      • 2011-08-10
      • 2010-10-11
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 2014-07-21
      相关资源
      最近更新 更多