- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
for ( i = 0; i <= n; i++ )
{
k = 0;
for ( j = ( 2 * n - i - 1 ); k == 0; k++ )
{
a1 = a1 & ~ ( 1 << ( j ) );
a1 = a1 | ( ( ( a1 >> ( i ) ) & 1 ) << ( j ) );
};
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+139
for ( i = 0; i <= n; i++ )
{
k = 0;
for ( j = ( 2 * n - i - 1 ); k == 0; k++ )
{
a1 = a1 & ~ ( 1 << ( j ) );
a1 = a1 | ( ( ( a1 >> ( i ) ) & 1 ) << ( j ) );
};
}
по условию задачи (реверсирование битов числа) студентам нельзя было юзать if.
минуты две понадобилось что бы 6ю строчку мозги приняли и проинтерпретировали.
:)
2. реверсирует? n чему равна? если n = половине разрядности числа - тогда младшая половина не меняется, а старшая - реверс младшей. если n = разрядности числа вообще фигня получается...
3. в строке 1: i <= n - косяк наверно.
видимо требовалось что-то типа
// n = sizeof(a1)*4;
for(i = 0; i < n; i++){
j = (2 * n - i - 1);
t = ((a1 >> i) & 1) ^ ((a1 >> j) & 1);
a1 ^= (t << i) | (t << j);
}
к Си упростить не велика проблема
Не инвертировать биты i=~i, а инвертировать порядок бит
Не проверял, но можно что-то типа такого.
жульничество конечно:)
или что-то подобное