да, представленное представление очень правильное, как если бы мы делали это наоборот, и вам потребуется оператор, чтобы обратить все биты в обратном порядке, но в этом случае логика довольно проста, если мы рассмотрим размер целых чисел в машине
Например, на большинстве машин целое число составляет 2 байта = 16-битное максимальное значение, которое оно может содержать, 2 ^ 16-1 = 65535 2 ^ 16 = 65536
0% 65536 = 0
-1% 65536 = 65535, что соответствует 1111 ............. 1 и все биты установлены в 1 (если мы рассмотрим классы остатков мод 65536)
следовательно, это очень прямо вперед.
Я думаю,
нет, если вы рассмотрите это понятие, оно идеально подходит для неподписанных целых, и оно действительно работает
просто проверьте следующий фрагмент программы
int main ()
{
unsigned int a=2;
cout<<(unsigned int)pow(double(a),double(sizeof(a)*8));
unsigned int b=-1;
cout<<"\n"<<b;
getchar();
return 0;
}
ответ для b = 4294967295, который равен -1% 2 ^ 32 для 4-байтовых целых чисел
следовательно, это совершенно верно для целых чисел без знака
в случае любых расхождений, plzz report