diff --git a/lec06/bin b/lec06/bin new file mode 100755 index 0000000000000000000000000000000000000000..35ae6c7ba931bfaeb52dd2a68a8d52af88716625 Binary files /dev/null and b/lec06/bin differ diff --git a/lec06/binary.c b/lec06/binary.c new file mode 100644 index 0000000000000000000000000000000000000000..11e24ea150aab216d79ec2c67a514ea8d723c28b --- /dev/null +++ b/lec06/binary.c @@ -0,0 +1,19 @@ +#include<stdio.h> + +int main() +{ + int i; + unsigned int in_a; + fscanf(stdin, "%u", &in_a); + fprintf(stdout, "%u \t : ", in_a); + for(i=31; i>= 0; i--) + { + fprintf(stdout, "%d", ((in_a>>i) & 1)); + if(i % 4 == 0) + fprintf(stdout, " "); + } + fprintf(stdout, "\n"); + +} + + diff --git a/lec06/count1 b/lec06/count1 new file mode 100755 index 0000000000000000000000000000000000000000..044c87c01c5e85e79a9e8fc123de276add57f389 Binary files /dev/null and b/lec06/count1 differ diff --git a/lec06/count1.c b/lec06/count1.c new file mode 100644 index 0000000000000000000000000000000000000000..54e10c3b397d052fed3a288383e77a44e45ec773 --- /dev/null +++ b/lec06/count1.c @@ -0,0 +1,51 @@ +#include<stdio.h> +#define VALUE_ONE 1 + +// Count number of 1 (binary) +int count_one(unsigned int a) +{ + int const con = 1; + int static numCalls = 100; + int count = 0; + // con++; -> ERROR + while(a != 0) + { count += a & VALUE_ONE; + a >>=VALUE_ONE; + //if((a>>i) & 1) + // count ++; + // if문 보다 아래처럼 사용하는 것이 훨씬 빠름 + //count += (a>>i) & 1; + //count += a & 1; // 000..0001과 비교즉 마지막 숫자와 계속 비교 + //a >>=1; //한칸씩 오른쪽 쉬프트 + } + fprintf(stderr, "Call : %d\n", numCalls); + numCalls++; + return count; +} + +int main() +{ + int i; + unsigned int in_a; + fscanf(stdin, "%u", &in_a); + fprintf(stdout, "%u \t : ", in_a); + for(i=31; i>= 0; i--) + { + fprintf(stdout, "%d", ((in_a>>i) & 1)); + if(i % 4 == 0) + fprintf(stdout, " "); + } + fprintf(stdout, "\n"); + + count_one(in_a); + count_one(in_a); + count_one(in_a); + count_one(in_a); + + fprintf(stdout, "\n"); + fprintf(stdout, "count : %d\n", count_one(in_a)); + return 0; + +} + + diff --git a/lec06/hello.c b/lec06/hello.c new file mode 100644 index 0000000000000000000000000000000000000000..131a5b85be29acf7c78bc22e8dcabbb1df45f435 --- /dev/null +++ b/lec06/hello.c @@ -0,0 +1,23 @@ +#include<stdio.h> + +int add(int *a, int *b, int *c) +{ + *c = *a + *b; +} + +int main() +{ + const int a = 100; + int b = 200; + long long c = 999; + // int * == long long + + fprintf(stdout, "%d : %lld %llx\n", a, &a, &a); + fprintf(stdout, "%d : %lld %llx\n", b, &b, &b); + add(&a, &b ,&c); + //c = a+b + fprintf(stdout, "%d : %lld %llx\n", c, &c, &c); + fprintf(stdout, "%d : %lld %llx\n", c, &c+1, &c+1); + fprintf(stdout, "%d : %lld %llx\n", c, &c+2, &c+2); + +} diff --git a/lec06/report06.md b/lec06/report06.md new file mode 100644 index 0000000000000000000000000000000000000000..9a17f431efc06e575a7e8754534c537ae331a05f --- /dev/null +++ b/lec06/report06.md @@ -0,0 +1,7 @@ +### Lecture 06 + +#### Pointer / Address + +*int const A : A라는 variable이 constant int이다. +*int * const A : *가 const이다. +*int const ** A : const int를 가르키는 포인트의 포인트 diff --git a/lec06/sumarr.c b/lec06/sumarr.c new file mode 100644 index 0000000000000000000000000000000000000000..163f343627379b05c07b11d83ef66c2d32e8373f --- /dev/null +++ b/lec06/sumarr.c @@ -0,0 +1,36 @@ +#include<stdio.h> + +int sumArray3(int a[3], int sum) +{ + sum = *a; + a++; + sum += *a; + a++; + sum += *a; +// a[3] = a[0]+a[1]+a[2]; +// sum = a[3]; + fprintf(stdout, "%d : %lld %llx\n", sum, &sum, &sum); + return a[3]; +} +int main() +{ + int a = 100; + int b = 200; + int c = 999; + int arr[4] = {100, 200, 300, 400}; + int *parr; + parr = arr; + parr++; + fprintf(stdout, "%d : %lld %lld\n", *parr,parr,arr); + + c = sumArray3(arr, b); + + fprintf(stdout, "%d : %lld %llx\n", b, &b, &b); + fprintf(stdout, "%d : %lld %llx\n", arr, arr, arr); + fprintf(stdout, "%d : %lld %llx\n", *arr, *arr, *arr); + fprintf(stdout, "%d : %lld %llx\n", &arr, &arr, &arr); + fprintf(stdout, "%d : %lld %llx\n", arr[2], &arr[2], &arr[2]); + fprintf(stdout, "%d : %lld %llx\n", arr[3], &arr[3], &arr[3]); + fprintf(stdout, "%d : %lld %llx\n", arr[4], &arr[4], &arr[4]); + +}