我正在查看C中的现有代码,其中在100到899的特定范围内检查no。我想添加一个条件以及no可以具有值1FE。我不应该将它转换为十进制数。但我需要检查这个十六进制值。 我怀疑的是,硬件如何解释十进制和十六进制的比较。硬件将解释零和一的值。那么它会将十进制和十六进制no转换为二进制来检查值吗? (当转换为十进制时为1FE为510,将包含在no 899中。)请帮助理解。
答案 0 :(得分:4)
int x = 0x1fe;
和int x = 510;
与计算机完全相同(或者更具体地说,对于编译器 - 实际硬件永远不会看到“0x1fe”或“510” - 它只会看到二进制版本)所以你的问题没有多大意义。
更改基数只会更改值的表示形式;它不会改变实际值。如果您有101个 2 苹果,并且您有5个 10 苹果,那么您仍然拥有相同数量的苹果。
表示计算机使用恰好是二进制。 (好吧,不会'只是发生',但是......是的。)
答案 1 :(得分:3)
我的疑问是,硬件将如何解释十进制和十六进制的比较。
硬件没有十进制或十六进制的概念。机器0x1FE和510无法区分;它们只是两种完全相同的不同表现形式。