A
А так не знаю )
Не общался лет 5.
Size: a a a
A
A
D
unsigned int x,y;
...
if(x < y) x = UINT_MAX - y + 1;
идея этого кода - простой заем из старшего разряда, который в данном случае хранится в другой целой переменной. Но могу ли я так написать, или нужно явно:
if(x < y) {x = UINT_MAX - y; x++;
}P
D
D
P
P
P
P
if(x < y) x = (UINT_MAX - y) + 1;
P
P
D
x = 0 - y;
P
x = 0 - y;
P
#ifndef uint_tдалее юзаются две переменных:
typedef unsigned int uint_t;
#endif
#define K 4
#define K_MASK ( ((uint_t)1 << (K)) - 1 )
uint_t val, val_mod;ну и где-то дальше:
val = x>>K;ну и где-то дальше вычитаем из остатка от деления бОльший остаток:
val_mod = x&K_MASK;
if (val_mod < y) /* нужен заем */если кому-то интересно это разобрать...
{
val--;
val_mod += K_MASK - y; val_mod[n]++; /* val_mod = 2^K - (y - val_mod) */
}
P
x = 0 - y;
P
F
F