isascii 함수 구현하기

윤효준·2024년 7월 18일

42 Libft 복습

목록 보기
4/28

isascii 함수의 manual은 다음과 같다!

Synopsis

#include <ctype.h>

int	isascii(int c);

Description

  • isascii 함수는 입력된 문자가 0과 0177(8진수)를 포함한 사이의 문자인지 검사한다.

여기서 왜 굳이 십진수 127를 8진수 0177로 작성했는지 의문이 들었다.

C 언어와 관련된 많은 초기 문서와 매뉴얼들은 8진수 표기를 사용하여 ASCII 값을 설명하는 전통이 있다고 한다.

  • 컴퓨터 과학의 초기 역사에서 많은 시스템은 8진수 표기법을 선호했다!

그 이유는

  • 초기 컴퓨터 시스템은 종종 6비트, 12비트, 18비트, 또는 36비트 위드 길이를 사용했다. 8진수는 각 자리 숫자가 3비트로 표현되므로 3비트의 배수로 구성된 시스템과 잘 맞아 떨어졌다!
    (여기서 워드란 CPU가 한 번에 처리할 수 있는 데이터의 기본 단위를 이야기한다)

  • 2진수와 직접적인 변환 관계가 있고 이진수에 비해 더 간단하게 표현될 수 있다!
    2진수(101 | 110 | 011) <=> 8진수(5 | 6 | 3)

  • 8진수는 당시 기술의 제약(메모리 제약)과 표준화의 부재에 대한 대응
    8진수는 메모리를 효율적으로 사용하면서도 가독성을 유지할 수 있었고초기 컴퓨터의 다양한 시스템에서 8진수를 사용하는 것이 일반적이었다!

  • 초기 UNIX 시스템과 같은 운영 체제는 8진수 표기를 널리 사용했다.
    chmod 와 같은 권한 관리 명령어의 경우 8진수를 사용하여 읽기(r),쓰기(w), 실행(x) 권한을 설정했다.

Return values

해당 manual에는 return values 에 대한 설명이 없어 isascii를 참고했다.

  • character tests false => zero
  • character tests true => non-zero

구현

int	ft_isascii(int c)
{
	return (0 <= c && c <= 127);
}
profile
작은 문제를 하나하나 해결하며, 누군가의 하루에 선물이 되는 코드를 작성해 갑니다.

0개의 댓글