Бегущий бит - тупление...
Mar. 25th, 2017 04:50 pmПростейшая, простейшая задачка на сях - сделать бегущий бит в байте. Циклически бегущий бит. Этакий огонёк. Пишу такой примитивнейший код:
И потом в цикле его вызываю:
И получаю странный результат:
Куда подевался битик? Я НЕ понимаю!
char rol(char a)
{
return (a << 1) | (a >> 7);
}
И потом в цикле его вызываю:
char port = 0x01;
while (1) {
...
printf("%2X\n", (int)port);
}
И получаю странный результат:
2 4 8 10 20 40 FFFFFF80 FFFFFFFF FFFFFFFF ...
Куда подевался битик? Я НЕ понимаю!
no subject
Date: 2017-03-25 01:58 pm (UTC)no subject
Date: 2017-03-25 02:02 pm (UTC)no subject
Date: 2017-03-25 02:03 pm (UTC)#include <stdio.h> unsigned char rol(unsigned char *a){ unsigned char c = *a; *a = (c << 1) | (c >> 7); return *a; } int main(){ int i; unsigned char bit = 0x80; for(i = 0; i < 8; ++i) printf("%02X\n", rol(&bit)); return 0; }Выхлоп:
no subject
Date: 2017-03-25 02:05 pm (UTC)no subject
Date: 2017-03-25 02:06 pm (UTC)no subject
Date: 2017-03-25 02:20 pm (UTC)no subject
Date: 2017-03-25 08:28 pm (UTC)no subject
Date: 2017-03-25 08:30 pm (UTC)https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html
no subject
Date: 2017-03-31 02:44 pm (UTC)