본문 바로가기

공부생각

[C] 변수타입와 비트수 변수타입에 따라 비트수가 다르다. "뭐, 처음 배울때는 비트수가 뭔 상관이야 그냥 값 때려넣으면 되지." 하곤 하지만, 공부를 하다보면 특히 임베디드시스템을 할때는 비트수가 치명적이다. 그래서 비트수에 대해서는 충분히 숙지하고 있는 것이 좋다. C를 기준으로 void main() { int a=1; double b =1.0; float c = 1.0; char d='c'; unsigned int e = 1; printf("int %d",sizeof(a)); printf("double %d",sizeof(b)); printf("float %d",sizeof(c)); printf("char %d",sizeof(d)); printf("unsigned int %d",sizeof(e)); } 하면 나오는 결과값은.. 더보기
[C#] List로 다수의 Struct들 관리하기 + Class와의 차이 흠... 일단 동적할당에 관련되어서 많은 것들이 많다. 아무래도 배열을 그대로 사용 하는 것은 갯수의 제한이 있고, 시스템이나 상황에 따라 유동적이지 못하거나, 메모리를 많이 잡아먹는 경우가 발생한다. 한마디로 유동성과 적응력을 높이면 메모리 낭비가 심하고, 낭비를 줄이려고 하다가는 배열의 갯수가 모잘라 예외가 발생할 수도 있다. 여기서 뭐 예외가 발생하면 뒷처리를 할 수도 있겠지만, 그것보다 우리에게 주어진 자료구조 List를 사용해서 컨트롤 해 보자. 일단 Class 와 struct를 사용하는데 있어서 차이점에 관심있으면 알아서 펼쳐서 보도록 ==========================^▽^======================================= 일단 알다시피 struct는 다수의 .. 더보기
[AVR_C] Volatile 변수에 대해서 AVR C 에서는 Volatile변수를 주로 사용한다. 이는 컴파일할때 최적화를 막아주기 위함이라고 하는데, 솔직히 이해안되서 그냥 모든 변수를 volatile이라고 선언해 주다가.... 이제 좀 알겠다 싶어 적는다. Volatile은 위에서 말한데로 컴파일하는데 최적화를 막아주는 방법이다. 컴파일할때 최적화를 시켜주는 경우가 있는데 한 변수가 바뀌는 코드가 없이 한 코드안에서 계속 사용되면, 이 변수를 얻으러 메인메모리까지 가기가 귀찮아서 로컬레지스트에 저장해놓는다. 예를 들어 int i = 100; 해놓고 아래에서 setValue(i); 뭐 이런식으로 만 쭈욱 써놨지, i = i+20; 처럼 변수를 변형하는 꼴이 없다면 그냥 가까운 곳에 복사해놓는다는 것이다. 하지만 문제가 되는게, 특히 임베디드 시.. 더보기
[언어잡지식] 오버로딩과 폴리몰피즘의 차이 (Overloading and Polymorphsim) 둘다 OOP의 개념에서 나오는 것인데. 오버로딩과 폴리몰피즘의 차이는 뭘까. 오버로딩은 함수의 "재정의" 이다. 그 재정의 된 함수 사이에는 구별되는 특징이 있다. 리턴값이 다르다던지, 인풋갯수가 다르다던지, 인풋타입이 다르다던지... 비록 함수의 이름은 같더라도, 구별되는 특징에 따라 다른 함수가 적용되는 것이다. 예를 들어. public int add (int a , int b) public double add (double a, double b) 정수를 더하나 실수를 더하나 우리는 같은 더하기 이므로, 직관적인 add라는 작업단위로 읽힐 수 있도록, 이렇게 해주는 것이다. OOP의 강화라고 볼 수 있지... 폴리몰피즘 다형성? 상속이란 것으로 나타나는 건데 조금 복잡하지만 이해하면 왜 이렇게 쓰는지.. 더보기
[전산잡지식] 버퍼 (Buffer) 대충 임시기억장치이다. 라는 뭐 이런식으로 정의는 알았었지만, 솔직히 이게 어떻게 쓰이는지 친절하게 설명을 받은 적이 없어 이렇게 적어본다. 혹시 나 같은 사람 있으면 읽고 가시겠지.. 1. Buffer ( 버퍼 ) 버퍼란 놈은 임시로 저장해두는 곳이라고 생각하면 된다. 요놈을 사용하면 전체적인 시스템의 속도도 빨라 질 수 있는데, 임시 저장한다고 속도가 빨라져? 벙쪄있지말고 좀더 읽어보아. 버퍼를 회로도에서 보면 빠져나간 값이 또 다시 들어오고 또 빠져나가고, 일종의 루프를 그리는 것을 알 수 있다. 그럼 버퍼를 왜 사용해 줄까? 버퍼가 임시로 저장해 두는 곳이라고 하면, 분명 임시로 저장함이 필요한 구석이 있으니까 만들었겠지. 예를 들어 보자. x = 1 + 3 ; x = x * x ; x = x- .. 더보기
[전산잡지식] 객체지향프로그래밍(OOP) 객체 지향 프로그래밍 (Object-Oriented Programing). 요놈은 프로그래밍 언어를 배우면서 항상 따라오는 부분이고, 참 중요한 부분인데, 아쉽게도 절차적 언어의 한계를 몸소 느끼지 못했다면 정말 이해하기도 힘든 부분이다. 아마 많은 프로그래밍과 팀프로젝트를 겪으면서 겨우 객체지향프로그래밍이 왜 좋은지를 느끼게 될 것이다. 나는 이런 상황이라 느꼈는데도, 어디가서 객체지향프로그래밍의 장점과 단점을 코드 실 예를 이용해서 보여준적은 없는듯... 아쉬운 부분... 여하튼!! 일단 절차적언어의 단점에서 부터 파생된 것이니 절차적언어부터... 절차형 언어에서는 흔히 기능을 분할에 그에 따르는 각 모듈을 만들어서 수행시키는데, 그 각 모듈이 따로 논다는거다(데이터취급이 완전하지 못하다). 뭐 따로.. 더보기
[전산잡지식] 스텍(stack)에 대한 원초적인 설명과 예 아아아주 기본적인 얘기를 해보려 한다. 스텍과 큐. 참 많이들 듣는다. 전산에서는 절대 빼먹을수 없고, 아주 중요하게 자주 쓰이는 자료구조이다. 근데 솔직히, "스텍은 FILO(First in Last out) 이고, 큐는 FIFO(First In First Out)이다." 라는 말만 우구장창 나올뿐, 책에도 어떤자료에도 스텍과 큐가 실제로 어떻게 쓰이며, 이 자료구조가 언제 빛을 발하는지 따위는 나와 있지 않다. 그래서 개념만 알고 있을 뿐, 어따쓰는지 어따적용시킬 수 있는지 공허하기만 하다. 가장 좋은건 자료구조(Data Structure)수업을 조낸 잘들으면 되겠지만, 어찌됫건 간단하게 써본다. 위에 무려 주황색으로 써놓았듯이 스텍과 큐는 FILO와 FIFO 로 불려진다. 이 특징이 매우 중요하기때.. 더보기
[언어잡지식] 함수의 인풋에 배열(array) 직접 넣기 상당히 기본적인 것임에도 불구하고, 그냥 넣기전에 하나 만들어서 넣어도 됨에도 불구하고, 그냥 한번 끄적여본다. C++/C#/JAVA 에 모두 해당할 수 있는 이야기인듯. 나는 C#에서 한것이지만... 뭐 이런 함수가 있다치자. ------------------------------- void function ( int[] in ) { ... } -------------------------------- 이제 저 함수를 실행시켜보자. 정수형 배열을 넣고 싶은데, 어떻게 넣어야 하나? 그냥 간단한 방법으로는 --------------------------------- int[] a = {1, 2, 3}; function(a); --------------------------------- 이렇게 넣으면 된다.. 더보기
[C#] Text box 에서 줄 띄워쓰는 법 Text box 에서 줄을 바꿀필요가 있을때가 있다. (아, 물론 일단 Text box 에 속성에 보면 multiline을 허가하는 부분이 있는데 이것을 우선 true로 만들어 줘야 한다) 그러고 나서 이렇게 써보면 Textbox1.text = "이렇게 띄워쓰면 \n 될려나?" ; 라고 입력하면, 결과는 이상하게 나온다. C#에서는 다른 방법을 사용해야 하는데, 이때사용 되는게 "Environment.NewLine"이다. 그럼 C#에서 올바른 표현은 Textbox1.text = "이렇게 띄워쓰면 " + Environment.NewLine + "될려나?" ; 가 되는 것임둥!!! 그럼 뱀...◎~ 더보기
[정보표현학] Gestalt Law (게슈탈트 로우) 가 무어냐? <뱀!> Gestalt law는 쉽게 말해 사람이 어떻게 그림을 인식하고 사물과 매칭을 시키느냐 에 관한 법칙이다. 더 쉽게 말해, 그림이 주어지면 어떠한 방법으로 이 그림을 분석해서 읽어들이냐 하는것이다. 인지와 관련된 학문에서 꽤나 기본적으로 다루어지는 부분이다. Information Visualization(정보표현) 학문에서도 Gestalt law는 아주 기본적인 요소이다. "사람이 그림을 어떻게 인식하니까, 우리는 이렇게 그려야 조금 더 사람이 읽어들이기 쉽게 표현된다." 일단 사람이 사물(Object)를 인식하는 간단한 방법(method)들을 소개한다. 1. Similarity (유사성) 유사성에 따라 사물을 묶어 인식한다. 일종에 패턴을 읽는다고 말할 수 있겠는데 그 유사성은 모양이될수도 있고, 색깔.. 더보기