- 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.
Dummy00001 11.11.2011 00:21 # 0
минуты две понадобилось что бы 6ю строчку мозги приняли и проинтерпретировали.
:)
ctm 11.11.2011 06:32 # 0
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);
}
roman-kashitsyn 11.11.2011 09:09 # 0
TarasB 11.11.2011 09:12 # 0
defecate-plusplus 11.11.2011 09:25 # 0
к Си упростить не велика проблема
defecate-plusplus 11.11.2011 09:41 # 0
ctm 11.11.2011 10:42 # 0
rat4 11.11.2011 11:48 # −1
lucidfoxGovno 11.11.2011 11:57 # 0
Не инвертировать биты i=~i, а инвертировать порядок бит
rat4 11.11.2011 12:06 # 0
TarasB 11.11.2011 09:11 # 0
gegMOPO4 11.11.2011 11:27 # +1
AnimeGovno-_- 11.11.2011 11:29 # −1
lucidfoxGovno 11.11.2011 10:30 # −1
Не проверял, но можно что-то типа такого.
ctm 11.11.2011 10:42 # +1
жульничество конечно:)
lucidfoxGovno 11.11.2011 10:59 # +1
ctm 11.11.2011 11:41 # 0
или что-то подобное
lucidfoxGovno 11.11.2011 11:55 # 0