c 언어 산술 연산 자 크로스 오 버 문제 해결 방안

대량의 보안 구멍 은 컴퓨터 산술 연산 의 미묘 한 세부 사항 으로 인해 발생 한 것 이다.구체 적 인 C 언어,예 를 들 어 기호 수 와 부호 가 없 는 숫자 간 의 전환,산술 연산 의 경 계 는 예측 할 수 없 는 오류 와 안전 구멍 을 초래 할 수 있 고 구체 적 인 사례 는 셀 수 없 을 정도 로 많다.시스템 프로그래머 로 서 이러한 세부 사항 에 대해 깊이 이해 할 필요 가 있다.본 편 은 csapp 을 참고 하여주로 산술 연산 의 크로스 오 버 문 제 를 어떻게 판단 하 는 지 소개 합 니 다.그리 어렵 지 않 습 니 다.주로 관건 적 인 정 리 를 사용 하여 코드 를 씁 니 다.Go~문제 1:기호 가 없 는 덧셈 과 한계 문제[정리]
4.567916.[이해]이 정 리 는 비교적 쉽 고 받 아들 일 수 있 습 니 다.설명 하지 않 겠 습 니 다.4.567913.문제 2:기호 가 없 는 감법 월경 문제[정리]


[이해]1.컴퓨터 에 뺄셈 이 없다.x-y=x+(-y),여기 있 는-y 는 바로 상기 y 의 덧셈 역 원 이다.기호 가 있 든 없 든 모두 덧셈 연산 으로 전환 된다.다만 덧셈 역 원 의 정의 가 다르다C 언어 보증-x=~x+1;이러한 방식 은 위의 공식 과 등가 임 을 검증 할 수 있다.4.s=x-y=x+(-y).그러면 등가 가 Y 가 0 이 아니 거나!uadd_ok(x, -y).
문제 3:부호 가 없 는 곱셈 경계 문제[정리]
4.567916.[이해]등가 조건 은 서로 유도 하면 된다.

4.567916.[이해]기호 가 없 는 감법 과 마찬가지 로 덧셈 역 원 의 정의 만 다 르 지만 비트 모델 은 같다.C 언어 는 보장-x=~x+1.똑 같이 두 가지 상황 으로 나 누 어 토론 할 수 있다.코드 를 보면
 
/* Determine whether arguments can be added without overflow */
int uadd_ok(unsigned int x, unsigned int y)
{
return !(x+y < x);
}
문제 6:기호 수가 있 는 곱셈 월경 문제[정리]는 기호 가 없 는 곱셈 과 완전히 같다.

좋은 웹페이지 즐겨찾기