0

我正在查看 C 中的现有代码,其中检查了特定范围 100 到 899 中的否。我想再添加一个条件,即 no 可以具有值 1FE。我不应该将其转换为十进制数。但我需要检查这个十六进制值。我的疑问是,硬件将如何解释十进制和十六进制的比较。硬件将解释零和一中的值。那么它会将十进制和十六进制数字转换为二进制以检查值吗?(因为1FE转换成十进制是510,会包含在899里面)。请大家帮忙理解。

4

2 回答 2

4

int x = 0x1fe;并且int x = 510;对计算机来说是完全相同的(或者更具体地说,对编译器来说——实际的硬件永远不会看到“0x1fe”或“510”——它只会看到二进制版本)所以你的问题没有多大意义感觉。

更改基数只会更改值的表示;它不会改变实际值。如果你有 101个 2 个苹果,你有 5个 10 个苹果,你仍然有相同数量的苹果。

计算机使用的表示恰好是二进制的。(嗯,不是“恰好”是,但是....是的。)

于 2012-11-07T00:57:19.143 回答
3

我的疑问是,硬件将如何解释十进制和十六进制的比较。

硬件没有十进制或十六进制的概念。对机器来说 0x1FE 和 510 是无法区分的;它们只是完全相同事物的两种不同表示。

于 2012-11-07T00:56:40.450 回答