【问题标题】:What is 0 - (-128) with 2's complement notationequal to?0 - (-128) 与 2 的补码符号等于什么?
【发布时间】:2019-03-06 19:41:55
【问题描述】:

我很难理解使用 8 位有符号整数的以下等式是否存在任何溢出。
0b00000000 - 0b10000000

【问题讨论】:

  • 这将更好地表示为代码,而不是从代码中删除一个度数的东西。同时编译所有警告 (-Wall) 以查看编译器是否对处理该代码犹豫不决。
  • 是的,这个问题肯定需要示例代码。
  • 0b10000000 并不是真正的“2 的补码符号”。它是一个 8 位值的 二进制 表示法。 0b...0,1 digits... 是一个非标准的整数二进制常量,通常是int 类型。 C 代码无法使用 8 位数学进行减法运算,即使常量是 char,正如 R.. 很好解释的那样。如果答案/cmets 不能很好地解决您的问题,您真的应该添加更多细节。

标签: c binary bit


【解决方案1】:

这个问题被标记为c,并且在 C 中,所有比int 等级低的类型的算术都被提升为int,并且int 至少有16 位范围,所以(signed char)0-((signed char)-128) 是只有 128 个。

【讨论】:

    猜你喜欢
    • 2013-06-05
    • 1970-01-01
    • 2013-08-17
    • 2019-07-27
    • 2022-12-15
    • 2023-03-31
    • 2010-11-06
    相关资源
    最近更新 更多