-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinteger_data_viewed_in_binary.cpp
149 lines (116 loc) · 3.56 KB
/
integer_data_viewed_in_binary.cpp
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/*
this little C++ program demonstrates how different integer values
are represented in binary
*/
#include<iostream>
template<typename T>
void printInBinary (T a)
{
unsigned char var8 = 0x80;
unsigned short var16 = 0x8000;
unsigned int var32 = 0x80000000;
unsigned long long var64 = 0x8000000000000000;
size_t sizeInBytes = sizeof(a);
switch(sizeInBytes)
{
case 1:
for(int i = 0; i < 8; i++)
{
if(a & var8)
std::cout << "1";
else
std::cout << "0";
var8 >>= 1;
}
break;
case 2:
for(int i = 0; i < 16; i++)
{
if(a & var16)
std::cout << "1";
else
std::cout << "0";
var16 >>= 1;
}
break;
case 4:
for(int i = 0; i < 32; i++)
{
if(a & var32)
std::cout << "1";
else
std::cout << "0";
var32 >>= 1;
}
break;
case 8:
for(int i = 0; i < 64; i++)
{
if(a & var64)
std::cout << "1";
else
std::cout << "0";
var64 >>= 1;
}
break;
default:
std::cout << "Something went wrong";
break;
}
std::cout << std::endl;
}
int main()
{
std::cout << "Exploring char data type\n" << std::endl;
char ch0 = 0;
printInBinary<char>(ch0);
printf("char 0 = %d \n", ch0);
std::cout << "-----" <<std::endl;
char ch1 = 1;
printInBinary<char>(ch1);
printf("char 1 = %d \n", ch1);
std::cout << "-----" <<std::endl;
char ch2 = 2;
printInBinary<char>(ch2);
printf("char 2 = %d \n", ch2);
std::cout << "-----" <<std::endl;
char ch127 = 127;
printInBinary<char>(ch127);
printf("char 127 = %d \n", ch127);
std::cout << "-----" <<std::endl;
char ch128 = 128;
printInBinary<char>(ch128);
printf("char 128 = %d \n", ch128);
std::cout << "-----" <<std::endl;
char ch_128 = -128;
printInBinary<char>(ch_128);
printf("char -128 = %d \n", ch_128);
std::cout << "-----" <<std::endl;
char ch129 = 129;
printInBinary<char>(ch129);
printf("char 129 = %d \n", ch129);
std::cout << "-----" <<std::endl;
char ch_129 = -129;
printInBinary<char>(ch_129);
printf("char -129 = %d \n", ch_129);
std::cout << "-----" <<std::endl;
char ch_130 = -130;
printInBinary<char>(ch_130);
printf("char -130 = %d \n", ch_130);
std::cout << "-----" <<std::endl;
std::cout << "-----------------------" <<std::endl;
std::cout << "\nExploring other integer data types\n" << std::endl;
short sh_130 = -130;
printInBinary<short>(sh_130);
printf("short -130 = %d \n", sh_130);
std::cout << "-----" <<std::endl;
int int_130 = -130;
printInBinary<int>(int_130);
printf("int -130 = %d \n", int_130);
std::cout << "-----" <<std::endl;
long long ll_130 = -130;
printInBinary<long long>(ll_130);
printf("long long -130 = %lld \n", ll_130);
std::cout << "-----" <<std::endl;
return 0;
}