16진수 8진수

2024. 3. 29. 00:29정보처리,전산/자료구조

반응형


■ 16진수

 컴퓨터 메모리 주소와 메모리 오프셋을 더 간결하게 표현할 수 있게 하고, 주소 간의 관계를 시각적으로 파악하기 쉽게 한다. 연산에서는 데이터의 각 비트를 개별적으로 조작, 색상 채널(RGB 또는 RGBA)을 표현, 상수나 메모리 주소 등을 16진수로 표현하여 코드의 가독성을 높이고 상수를 식별하기 쉽게 만든다.
 

 

def binary_to_hex(binary):
    # 입력된 이진수를 뒤집다.
    binary = binary[::-1]
    # 4의 배수가 되도록 왼쪽에 0을 채웁니다.
    binary = binary.zfill((len(binary) + 3) // 4 * 4)

    hex_digits = '0123456789ABCDEF'  # 16진수에 해당하는 문자들이다.
    hex_result = ''
    for i in range(0, len(binary), 4):
        # 4비트씩 묶어서 16진수로 변환한다.
        four_bits = binary[i:i + 4]
        hex_digit = hex_digits[int(four_bits, 2)]
        hex_result += hex_digit

    # 만들어진 16진수를 뒤집어서 반환한다.
    return hex_result[::-1]

# 테스트
binary_number = '110110101'
hex_number = binary_to_hex(binary_number)
print("2진수", binary_number, "는 16진수", hex_number, "로 변환된다.")

# 이진수를 5자리로 맞추기 위해 왼쪽에 0을 채우는 예제
binary = "101"
binary = binary.zfill(5)
print(binary)  # 출력: "00101"

# 이진수를 5자리로 맞추기 위해 오른쪽에 0을 채우는 예제
binary = "101"
desired_length = 5

# 오른쪽에 0을 추가하여 문자열 길이를 늘린다.
while len(binary) < desired_length:
    binary += '0'

print(binary)  # 출력: "10100"

 

 

 

 

 

 

■ 8진수

 

하드웨어와 직접 상호 작용하는 저수준 프로그래밍에서 특정 레지스터나 플래그를 설정하거나 제어할 때 8진수가 특정 비트 패턴을 나타내는 데 사용될 수 있다.

 

def binary_to_octal(binary):
    # 3비트씩 묶어서 처리하기 위해 오른쪽으로 쉬프트한다.
    binary = binary[::-1]  # 입력된 이진수를 뒤집다.
    binary = binary.zfill((len(binary) + 2) // 3 * 3)  # 3의 배수가 되도록 왼쪽에 0을 채웁니다.

    octal = ''
    for i in range(0, len(binary), 3):
        # 3비트씩 묶어서 8진수로 변환한다.
        three_bits = binary[i:i + 3]
        octal_digit = int(three_bits, 2)
        octal += str(octal_digit)

    # 만들어진 8진수를 뒤집어서 반환한다.
    return octal[::-1]

# 테스트
binary_number = '110110101'
octal_number = binary_to_octal(binary_number)
print("2진수", binary_number, "는 8진수", octal_number, "로 변환된다.")
반응형

'정보처리,전산 > 자료구조' 카테고리의 다른 글

삽입 정렬 insertion Sort  (0) 2024.07.22
ArrayList LinkedList  (0) 2024.04.26
이진탐색 binary search  (0) 2024.03.15
포인터 문제 c로 분석  (0) 2024.01.01
정적변수 static. Java코드로 분석  (1) 2023.12.31