有没有办法在c中用十六进制算术?还有两个十六进制数字之间的比较,你会怎么做?我没有看到任何好的例子,如果你有一个很大的帮助!
答案 0 :(得分:1)
你可以直接这样做。数字只是数字。 Base只是一个数字的表示。
int x = 0xa - 0x3;
printf("%02x\n", x);
您也可以混合基础格式,因为它们在计算机内部都表示相同。
// 0 in front for octal
// 0x in front for hexadecimal
x = 2*19 - 023 - 0x13; // x is now 0, as 19 == 023 == 0x13
使用您想要的基础打印它们只需选择格式:
x = 023; // 0x13
printf("%02d\n", x); // Format as decimal
printf("%02o\n", x); // Format as octal
printf("%02x\n", x); // Format as hexadecimal
答案 1 :(得分:1)
数学的一个定义特征是6 * 7 = 42; VI * VII = XLII; 110b * 111b = 101010b。当您的计算机进行数学计算时,处理器如何表示数字并不重要。只有在向用户显示号码时,基数才有用。
答案 2 :(得分:0)
“Hex”只是数字的符号约定(“十进制”)。除了通常的版本之外,没有“十六进制算术”。
也就是说,10 + 16是26,即使你将数字写为0x0A + 0x10
- 而十六进制的答案也是0x1A
( >幸运的是,也是'26'。
没有必要提供单独的方法来比较十六进制数 - 如评论中所述,数字是数字;不是“十六进制数”或“八进制数”。试试这个,使用你最喜欢的编译器:
#include <stdio.h>
int main (void)
{
printf ("10 + 16 = %d\n", 10 + 16);
printf ("0xa + 0x10 = %x\n", 0xa + 0x10);
printf ("012 + 020 = %o\n", 012 + 020);
printf ("10 = 0xa? %d\n", 10 == 0xa);
printf ("10 = 0x10? %d\n", 10 == 0x10);
return 0;
}