#include <iostream>
using namespace std;
bool is_even_number(int n)
{
return ((n + 1) & 1);
}
bool is_odd_number(int n)
{
return (n & 1);
}
int nearest_smaller_2(int n)
{
return (n & ~1);
}
int nearest_2(int n)
{
return ((n + 1) & ~1);
}
int nearest_4(int n)
{
return ((n + 3) & ~3);
}
int nearest_8(int n)
{
return (((n - 1) / 7) << 3) + 8;
}
int main()
{
for (int i = 0; i < 33; i++)
{
cout << i << " " << is_even_number(i) << " " << is_odd_number(i);
cout << " " << nearest_smaller_2(i);
cout << " " << nearest_2(i);
cout << " " << nearest_4(i) << " " << nearest_8(i) << endl;
}
return 0;
}
unsigned int ui16To32(unsigned short a, unsigned short b)А бывает нужно, особенно, если расчитывается сколько выделять памяти
{
return ((a << 16) | b);
}
unsigned short ui6To16(unsigned char a, unsigned char b)
{
return ((a << 8) | b);
}
Интересные алгоритмы с использованием битовых операций можно найти здесь:
http://www.coranac.com/documents/bittrick/
Математика для чисел с фиксированной точкой здесь:
http://www.coranac.com/tonc/text/fixed.htm
Системы исчисления и битовые операции здесь:
http://www.coranac.com/tonc/text/numbers.htm
No comments:
Post a Comment