gpt4 book ai didi

c++ - C++ 中的有符号类型表示

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:35 25 4
gpt4 key购买 nike

在我正在阅读的书中说:

The standard does not define how signed types are represented, but does specify that range should be evenly divided between positive and negative values. Hence, an 8-bit signed char is guaranteed to be able to hold values from -127 through 127; most modern machines use representations that allow values from -128 through 127.

我假设 [-128;127] 范围来自称为“二进制补码”的方法,其中负数是 !A+1(例如 0111 是 7,然后 1001 是 -7)。但我无法理解为什么在一些较旧的(?)机器中值范围 [-127;127]。谁能澄清一下?

最佳答案

一个的补码和带符号的大小都是提供范围 [-127,127] 的 8 位数字的表示。两者对 +0 和 -0 都有不同的表示。两者都已被(大部分)早期计算机系统使用。

带符号的幅度表示法可能是人类最容易想象的,并且可能出于与人们首先创建十进制计算机而不是二进制计算机的原因相同的原因使用它。

我想,曾经使用一个补码的唯一原因是因为早期计算机的创造者还没有考虑到二进制补码。后来,因为向后兼容。虽然,这只是我的猜想,所以请持保留态度。

更多信息:https://en.wikipedia.org/wiki/Signed_number_representations

作为一个稍微相关的事实:在 IEEE 浮点表示中,带符号的指数使用 excess-K表示,小数部分用带符号的大小表示。

关于c++ - C++ 中的有符号类型表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37363367/

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