微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用有符号整数时,我的值是否总是从零开始?

如何解决使用有符号整数时,我的值是否总是从零开始?

我一直在潜入并阅读无数的互联网论坛和网页,试图找到答案,但没有运气,所以我们来了。作为参考,我使用的是 A/Dconverter,我正在使用插入接地和 5V 的可变电阻器更改 A/Dconverter 的值。因此,当我编写 C 代码时,如果我使用有符号整数——该整数是模拟到 dig 转换的值——该值将自动在零的两侧拆分。例如,假设我得到了一个 8 位整数并且我使用的是有符号整数。因为我使用的是有符号整数,所以我自动获得的值是从 0 到 +255 之间的任何值,还是应该在我移动电阻上的雨刷器时自动接收一个介于 -128 到 +127 之间的值?

解决方法

欢迎使用 stackoverflow!这似乎是一个可以轻松测试的小细节。但是,我刚刚检查过的大多数教程都使用“int”而不是“unsigned int”。 One of the tutorials 表示如下:

“返回并存储在 x 中的值将是一个从 0 到 1023 的值。Arduino 有一个 10 位 ADC(2^10 = 1024)。我们将此值存储到一个 int 中,因为 x 更大( 10 位)比一个字节可以容纳的大小(8 位)。”

这让我相信这些值会在 0-X 之间,具体取决于可用位的数量。但正如我所说,这很容易测试。

,

让我先说明这一点, 一个 8 位整数包含 8 位。 2 8 是 256,所以一个 8 位整数可以容纳 256 个可能的值。 -128 到 127 之间有 256 个可能的值,包括在内。

因此,您应该期望值范围为 -128 到 127,而不是 0 到 255

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。