Hallo zusammen,
Entweder bin ich blind, zu blöd oder mein Compiler verarscht mich.
Dieses Minimalbeispiel
1 | #include <stdio.h>
|
2 | #include <stdlib.h>
|
3 | #include <stdint.h>
|
4 |
|
5 | int main(int argc, char *argv[])
|
6 | {
|
7 | uint8_t i;
|
8 | uint8_t value=0x8F;
|
9 | uint8_t shift=40;
|
10 |
|
11 | for(i=0;i<shift;i++){
|
12 | printf("%u",(value>>(shift-i-1))&1);
|
13 | }
|
14 |
|
15 | getch();
|
16 | return 0;
|
17 | }
|
erzeugt mir folgenden Output:
1 | 1000'1111'0000'0000'0000'0000'0000'0000'1000'1111
|
(Die Apostroph habe ich manuell eingefügt, damit mans besser lesen kann)
Warum rotiert mein Compiler die Variable value? Es sollten doch von
links immer nur Nullen nachgeschoben werden, egal wie weit ich schiebe.
Hab ich irgendwas verpasst oder stimmt hier was nicht?
Sprache: C
Compiler: DEV C++ V4.9.9.2, C-Projekt erstellt, Ohne Optimierung