CPP_RO_문자와 레디안

CJB_ny·2022년 6월 30일
0

C++ 정리

목록 보기
6/95
post-thumbnail

이것을 알기위한 사전지식


어소에서는 wchar_t arr[10] = L"asd"; 뭐

한 문자당 2바이트 할당했었는데... 뭐노? db == 1byte인데 어케됨?


데이터 밀어넣을 때

a db 0x00 이러헤 data 영역에 16진수가 들어갈거같지만

데이터는 공평해서 메모리에 01010100이런거 들어감. -> 우리가 그냥 16진수로 "해석"을 하겠다.

이런말임.

이렇게 1바이트짜리 에 값을 넣으면 a의 뒤에 값이 계속 들어간다.

마찬가지로 Hello World라는것 보면 16진수로 값들이 들어가있는데

H라는 문자열에 해당하는 아키스 코드값을 16진수로 변환한 것이다.

마지막에 하앗 0붙여야됨.

끝을 나타내는 방법임.

그래서 문자열의 끝을 나타내기 위해서 끝에 0x00 을 붙여주는 것이다.

동일한 데이터라 라더라도 어떻게 해석하느냐 ❗

숫자가 메모리에 저장이 될 때

b라는 변수의 메모리값을 보면은

78 56 43 21 이렇게 뒤집혀서 저장이 되어있음

( dd는 define dword약자임 4바이트 )

버그는 아니고 숫자가 메모리에 저장이 될 때 두가지 방법이 있다.

    1. 곧이 곧대로 저장하는 방법
    1. 뒤집어서 저장하는 방법

Endian 👍

여기서 메모리 주소가 0x100 -> 0x101 -> 0x102...이렇게 1씩 증가를 하는데

이유는 메모리의 단위는 1바이트 이기때문이다.

추가로 16진수 숫자 두개는 1바이트 이다.

우리가 사용하는 환경

Little-Endian으로 사용하고있다고 보면 된다.

이게

Intel, AMD환경에서는 웬만하면 Little-Endian으로 저장이 된다.

서버가 붙을 경우

Big-Endian 을 사용할지 Little-Endian 을 사용하지 고정해주어야함.

데이터 처리 하는 방식이 달라서 다른 값이 들어갈 수 있다.

그러면 왜 뒤집어서 저장을 하나?

장단점

Big-Endain : 숫자비교에 유리

Littile-Endian : 캐스팅에 유리 (크기가 큰거 -> 작은거 변환)

변수의 시작 주소에서 거꾸로 저장하느냐 원래대로 저장하느냐?

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글