2013-11-10 3 views
0

есть ли способ сделать арифметику в гексагоне c? Также сравниваете между двумя шестнадцатеричными числами, как бы вы это сделали? Я не видел хороших примеров этого, если у вас есть такая, которая будет большой помощью!арифметика в гексагоне в C

+5

Число - это номер. База - это просто форматирование. –

+0

Будете ли вы хранить шестерку в виде строки? –

+0

Если нет, то что сказал Митч. –

ответ

1

Вы можете просто сделать это напрямую. Числа - это просто цифры. База - просто представление числа.

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

Одним из определяющих характеристик математики является то, что 6 * 7 = 42; VI * VII = XLII; 110b * 111b = 101010b. Когда ваш компьютер выполняет математику, не имеет значения, как процессор представляет число. База имеет значение только тогда, когда она отображает номер для вас, пользователя.

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; 
} 
Смежные вопросы