C 언어의 대소단 저장 및 원본 부호화 부호화 연산 관계%d%u
2794 단어 C 언어
1. 메모리 VS 외장(하드디스크, 우대디스크, 플로피 등)
int NNN = 9;
소규모 바이트 시퀀스: 디지털 저장 초기 메모리의 낮은 주소(09 00 00 00) --->간단한 기억: 작은 크기 작은 크기
하이퍼텍스트 바이트 시퀀스: 메모리의 높은 주소에 저장된 숫자(00 00 00 0 09)
그레버 여행기 중 소인국에서 토론하는 문제는 계란을 먹을 때 큰 머리부터 까느냐, 작은 머리부터 까느냐이다.이 문제는 크고 작은 머리에 계란을 까는 문제와 유사하다. 대단자 바이트는 사람의 직감에 부합되고 나중에 쉽게 기억할 수 있다. 계란을 먹으면 큰 머리부터 까기 시작한다.
3. 기계의 소단 저장 여부를 판단하는 함수를 작성한다.
int isLittleEnd(int* p) {
char* p2 = (char*)p;
if (*p2 == 0x44) {
return 1;
}
return 0;
}
4.원코드, 반코드, 부호화 등 디자인의 원인은 컴퓨터 하드웨어에서 감법기, 곱셈기, 제법기의 원가가 높고 소프트웨어에서 부호화 연산을 통해 가감 곱셈을 해결할 수 있기 때문이다.
마이너스
곱하기:자신 n회 증가
나눗셈:자신을 n회 더 감소
정수의 원코드, 반코드, 보충코드는 같다!!!
음수의 존재 연산 관계: 부호화 = 반부호화 + 1;
원 부호 = 부호 보충 de 부호 + 1;
반코드
5. 자주 사용하는%d\%u 인쇄의 의미는 무엇입니까?
%d는: 기호가 있는 십진수 (int형 32비트) 를 인쇄합니다.
주의해야 할 점은:char 한 바이트의 변수입니다.%d에 따라 인쇄하면,char 은식을 int형 인쇄로 변환합니다. 변환 과정에서 높은 세 바이트가 기호 위치의 값을 채웁니다.
% u는: 기호가 없는 십진수 (int형 32비트) 를 인쇄합니다.
같은 도리u 인쇄는 매개 변수를 unsigned int 형식으로 변환하여 인쇄합니다
문제1: 다음 코드의 실행 결과: -1 - 1 255
char a = -1;
signed char b = -1;
unsigned char c = -1;
printf( "a = %d, b = %d, c = %d", a, b, c);
char형 8위. - 1의 보너스는 1111, 1111.
int형 32비트-1의 바코드는 11111111111111111111111111111111111111
고위는 기호 위치의 값을 보충하는데 이것은 이러한 전환 과정에서 데이터 오류가 발생하는 것을 방지하기 위해서이다.
signed char와 char는 다를 게 없어요.
unsigned char%d 인쇄 중
11111111 고위 보정 0(unsigned char 기호 없음), 정수로 처리하고 보정은 0으로 보정합니다.
그러면 보정 결과 0000 0000 0000 0000 0000 0000 1111 11 ----> 255 십진수
결론: unsigned 유형 변수 비교 구덩이는 은식 전환 등에서 문제가 발생하기 쉬우므로 unsigned를 사용하지 않아도 된다.
문제2: 다음 코드의 운행 결과: 4294967168
char a = -128;
printf("%u" , a);
생각: (char)a---.>int----> unsigned int 인쇄
기호 비트 10000000을 채워 넣습니다.
char ---> int \||/
1111 1111 1111 1111 1111 1111 1000 0000
int ---> unsigned int \||/
1111 1111 1111 1111 1111 10000000 | | 이때 가장 높은 자리는 더 이상 기호의 위치가 아니라 마이너스를 표시하지 않는다. 아래의 숫자는 매우 큰 정수 4294967168로 이해된다.
문제3: 다음 코드의 실행 결과는 다음과 같습니다.
char a = 128; // 128 char -128 ---> +127
printf("%u
", a);
128 메모리에서 이진법은 0000 0000 0000 0000 0000 10000000을 나타냅니다.
char a = 128;절단이 발생하여 유일한 1이 기호 위치가 되었고 이때 a의 값 본질은 -128이다.
\||/암시적 int 변환
\||/unsigned int로 변환하여 큰 정수(문제 2로 돌아가는 중)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.