Hi Leute!
Also folgendes.
Ich will einen Integer binär darstellen.
Ich hab zwar schon eine Lösung
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
int main() {
// declare our vars
int counter, user_input, index_counter, negative_positive;
char *output;
// define our vars
output = (char*) malloc(sizeof(char) * 32);
counter = user_input = index_counter = negative_positive = 0;
printf("Please enter an integer: ");
scanf("%d", &user_input);
doItFaster(user_input);
// we need to know if the input is positive or negative
// so we can fill our array with 1 or 0
if(user_input < 0) negative_positive = 1;
for(index_counter = 31; index_counter >= 0; index_counter--)
output[index_counter] = negative_positive;
if (negative_positive)
negative_positive = 0;
else
negative_positive = 1;
index_counter = 0;
while(user_input != 0 && user_input != -1) {
if((user_input % 2) != 0)
output[index_counter] = negative_positive;
index_counter++;
user_input = user_input >> 1;
}
for(index_counter = 31; index_counter >= 0; index_counter--) {
if( index_counter == 23 ||
index_counter == 15 ||
index_counter == 7 ) printf("|");
printf("%d", output[index_counter]);
}
printf("\n");
free(output);
return 0;
}
|
Aber ja, wie ihr seht muss man da ordentlich scrollen...
Meine Frage die ich dazu hätte wäre diese:
mit dem &-Operator vergleiche ich ja Bits.
D.h. wenn ich einen 32Bit-Integer habe der im Moment sagen wir mal den Wert 16 hat, und ich vergleiche ihn mit meiner Bitmaske, die zufällig auch gerade den Wert 16 hat, und ich binde das in eine if-Bedingung
|
C-/C++-Quelltext
|
1
2
3
4
|
bitmask = value = 16;
if(bitmask & value)
// ...
|
dann sollte da meines Wissens nach true raus kommen da:
|
C-/C++-Quelltext
|
1
2
3
4
5
|
0000 0000 0000 0000 0000 0000 0010 0000 // bitmask
0000 0000 0000 0000 0000 0000 0010 0000 // value
// soeit ich weiß gilt ja:
0101 & 0011 = 0001
|
Aber anscheinend hab ich da was falsch verstanden, denn mein Programm funktioniert nicht
Wär nett wenn mir das einer erklären könnte!
Danke,
lG Snooc