대신 기본 32를 사용하기에 충분한 문자가 있는데 왜 16 진수를 많이 사용합니까?

베드로

16 진수로 0-255를 가질 수 있고 2 문자로 저장할 수 있으므로 데이터를 압축하고 색상, IP 및 MAC 주소를 포함한 모든 종류의 항목에 사용됩니다.

내 질문은 왜 16 비트에서 멈췄습니까 (또는 가장 일반적으로 사용되는 이유)? 알파벳에는 32 비트 용으로 충분한 문자가 있으며, 이는 동일한 공간 내에 0-65536의 범위를 제공하여 16 백만이 아닌 280 조 색상을 허용 할 수 있습니다. 문자를 대소 문자를 구분하고 두 개의 기호를 추가하면 64 비트로 이동하여 최대 43 억 개의 값을 두 문자로 표현할 수 있습니다.


이것이 효과가 있다고 생각하는 상황의 몇 가지 예 :

IPv4가 부족합니다. v6이 출시되는 것을 알고 있지만 매우 길고 기억하기 어려울 것입니다. 192.168.0.1 주소를 가져 오면 C0.A8.0.1로 저장할 수도 있습니다. 64 비트 16 진수를 사용하지만 여전히 최대 8 자까지 유지하면 40 억 대신 280 조 조합을 가질 수 있으며이 문제는 발생하지 않습니다.

위에서 언급했듯이 훨씬 더 넓은 범위의 색상을 제공합니다. RAW 사진 형식은 8 개가 아닌 컬러 채널당 32 비트로 기록되며 파일 크기가 크게 증가한다는 단점이 있습니다. RGB 값이 16 진수로 저장된 경우 색상 범위를 늘려도 파일 크기가 변경되지 않아야합니다. 픽셀 당 6 비트 이내로 저장되지만 기본 번호는 더 높기 때문입니다. 대신 픽셀 당 96 비트의 수치로 기록되어 1600 %의 매우 불필요한 증가로 사진이 20MB 이상으로 남습니다 ( 온라인 계산기 에 따르면 32 비트 색상의 4K RAW 비디오는 최대 2.5GB까지 증가 할 수 있음) 초당).


이 부분은 실제로 질문과 관련이 없지만 숫자를 2 진수에서 88 진수 (그 후 기호에서 제외됨)에 이르는 다른 기본 값으로 변환 할 수있는 스크립트를 작성하여 쉽게 가능함을 보여줍니다. 비슷한 것을 구현합니다. 예를 들어, 다음은 66000의 출력입니다.
Base 2 : 11111111111110000
Base 16 : 101D0
Base 32 : 20EG
Base 64 : G7G 관심이있는 사람이 있으면
코드가 여기 에 있습니다. 그래도 몇 가지 버그가 있습니다. Maya 내에서. 주제에서 약간 벗어 났지만 일반 16 진수는 원래 숫자보다 약 20 % 적은 비트로 보이며 기본 88은 거의 50 % 감소한 것 같습니다.


마지막 질문 : 사진을 16 진수로 저장하는 아이디어를 시도한 사람이 있습니까? 64 비트 16 진수를 사용하고 [64; 1920; Bgh54D; NgDFF4; ...]와 같은 데이터로 사진을 저장하면 잠재적으로 작동합니까? 그렇지 않다면 나는 그것을 할 수있는 무언가를 만들려고 할 것입니다.

user275766

내가 질문을 올바르게 읽고 있다면 더 큰 염기를 사용할 때 데이터가 '축소'되지만 실제로는 그렇지 않다고 말하는 것입니다.

자신의 예를 들어 보자 : Base 2 : 11111111111110000 Base 16 : 101D0 Base 32 : 20EG Base 64 : G7G

16 진수가 표준이기 때문에 101D0을 사용합니다. Base 64 표기법을 사용하면 어떻게 될까요?

대답은 기본적으로 아무것도 아닙니다. 장치에서 데이터를 비트 단위로 저장하고 처리하고 있기 때문입니다. 101D0 대신 G7G가 있다고해도 여전히 장치에 11111111111110000을 저장하고 작업하고 있습니다. 숫자 5가 있다고 상상해보십시오. 이진수로 입력하면 101이됩니다. 101은 3 자리이고 5에는 1이 있습니다. 이것은 5가 101보다 더 압축되어 있다는 것을 의미하지 않습니다. 숫자를 0101로 계속 저장하고 있기 때문입니다. 너의 컴퓨터.

예제, IPv6 항목 또는 MAC 주소를 유지하기 위해 (이 예제에서는 점으로 구분 된 두 자리 숫자의 문자열과 동일합니다).

16 진수로 00 : 00 : FF : 01 : 01이 ​​있습니다. 그것이 당신이 그것을 정기적으로 표현하는 방법입니다. 이것은 바이너리로 0000 0000 0000 0000 1111 1111 0000 0001 0000 0001로 변환됩니다 (이제 16 진수를 사용하는 이유를 알기 시작했을 것입니다). 16 = 2 ^ 4이므로 16 진수 하나를 이진수 4 개로 변환하고 결과를 합쳐 실제 이진 문자열을 얻을 수 있기 때문에 쉽습니다. 기본 64 시스템에서 GG : HH : 01 : 02 : 03과 같은 것이 있으면 각 문자는 6 비트로 변환됩니다.

그렇다면 이것의 문제는 무엇입니까? 컴퓨터가 내부적으로 2의 거듭 제곱으로 작동한다는 사실. 그들은 당신이 사용하는 표기법에 대해 정말로 신경 쓰지 않습니다. CPU 레지스터, 메모리 및 기타 장치에서는 6 비트 그룹으로 나뉘어 진 데이터를 볼 수 없습니다.

요약 : Hexadecimal은 바이트가 두 문자 (0-F)로 표현 될 수 있기 때문에 인간이 이진을 더 쉽게 볼 수 있도록 도와주는 표기법입니다. 컴퓨터에 저장되고 처리되는 것은 사용하는 표기법에 관계없이 동일합니다. 읽어.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

U32가 이미 Sync를 구현하고 있는데 왜 Rust에서 AtomicU32를 사용합니까?

분류에서Dev

"= default"대신 기본 생성자 "{}"를 사용하는 성능 차이가있는 이유는 무엇입니까?

분류에서Dev

달리기, 걷기, 수영, 자전거 타기 등 사용자가하는 다양한 활동에 대한 데이터를 얻을 수 있습니까?

분류에서Dev

특성 IdPK를 긴 기본 키 대신 문자열 기본 키를 사용하는 사용자 지정 특성으로 어떻게 대체합니까?

분류에서Dev

왜 AskAction 대신 schema.org 기사를 사용합니까?

분류에서Dev

Joomla 사용자 관리는 잠재적 인 데이터를 처리하기에 충분히 안전합니까?

분류에서Dev

AFNetworking 2를 사용하여 16 진수 문자열을 데이터로 서버에 보내기

분류에서Dev

자동 증가 기본 키를 URL 식별자로 사용하는 것이 왜 나쁜 습관입니까?

분류에서Dev

새 항목을 덮어 쓰고 삭제할 수 있는데 왜 STL 컨테이너에 대한 사용자 지정 할당자를 작성해야합니까?

분류에서Dev

기본 키에 대한 행 범위를 반환하는 데 사용할 수있는 SQL 함수가 있습니까?

분류에서Dev

모델 및 수명주기 이벤트에 대해 알 수있는 사용자 지정, 재사용 가능한 하위보기를 원합니다.

분류에서Dev

내 팩토리 메서드를 직접 사용하는 대신 기본 생성자가 필요한 이유는 무엇입니까?

분류에서Dev

숫자에 대한 16 진수 표기법으로 코드를 작성하는 이유는 무엇입니까?

분류에서Dev

지속하기 전에 비즈니스 로직에서 유효성을 검사하는 것으로 충분합니까? 아니면 중요한 데이터에 대해 그 위에 트리거를 사용해야합니까?

분류에서Dev

snapd 서비스가 왜 그렇게 많은 데이터를 사용합니까?

분류에서Dev

iTunes가 왜 그렇게 많은 데이터를 사용합니까?

분류에서Dev

snapd 서비스가 왜 그렇게 많은 데이터를 사용합니까?

분류에서Dev

기본 초기화를위한 16 진수 표기법에 대한 질문

분류에서Dev

왜 우리는 KeyEvent.VK_를 사용합니까? 대신 단순히 문자를 사용

분류에서Dev

자바 : 자바 4 판에서 생각하기. 여기에서 16 진수를 사용하는 이유는 무엇입니까?

분류에서Dev

이 컨텍스트에서 단일 기본 키 대신 복합 기본 키를 사용하면 어떤 이점이 있습니까?

분류에서Dev

왜 누군가가 스레드를 사용하는 대신 서비스를 생성하지 않고 바인드하기를 원합니까?

분류에서Dev

나는 기본 자원에 대한 영어가 아닌 다른 언어를 사용할 수 있습니까?

분류에서Dev

for 루프에서 프로세스를 분기하는 대신 병렬을 사용할 가치가 있습니까?

분류에서Dev

for 루프에서 프로세스를 분기하는 대신 병렬을 사용할 가치가 있습니까?

분류에서Dev

왜 PhantomReference의 대기열에는 WeakReference를하거나하는 SoftReference보다 더 많은 GC 사이클을한다?

분류에서Dev

bash 스크립트에서 읽기를 사용하는 대신 문자열을 배열에 지원합니까?

분류에서Dev

Entity Framework Core에 기본 키가있을 때 항상 .FirstOrDefault () 대신 .Find ()를 사용해야합니까?

분류에서Dev

iOS 앱에서 사용 가능한 기본 이미지 편집기를 사용할 수 있습니까?

Related 관련 기사

  1. 1

    U32가 이미 Sync를 구현하고 있는데 왜 Rust에서 AtomicU32를 사용합니까?

  2. 2

    "= default"대신 기본 생성자 "{}"를 사용하는 성능 차이가있는 이유는 무엇입니까?

  3. 3

    달리기, 걷기, 수영, 자전거 타기 등 사용자가하는 다양한 활동에 대한 데이터를 얻을 수 있습니까?

  4. 4

    특성 IdPK를 긴 기본 키 대신 문자열 기본 키를 사용하는 사용자 지정 특성으로 어떻게 대체합니까?

  5. 5

    왜 AskAction 대신 schema.org 기사를 사용합니까?

  6. 6

    Joomla 사용자 관리는 잠재적 인 데이터를 처리하기에 충분히 안전합니까?

  7. 7

    AFNetworking 2를 사용하여 16 진수 문자열을 데이터로 서버에 보내기

  8. 8

    자동 증가 기본 키를 URL 식별자로 사용하는 것이 왜 나쁜 습관입니까?

  9. 9

    새 항목을 덮어 쓰고 삭제할 수 있는데 왜 STL 컨테이너에 대한 사용자 지정 할당자를 작성해야합니까?

  10. 10

    기본 키에 대한 행 범위를 반환하는 데 사용할 수있는 SQL 함수가 있습니까?

  11. 11

    모델 및 수명주기 이벤트에 대해 알 수있는 사용자 지정, 재사용 가능한 하위보기를 원합니다.

  12. 12

    내 팩토리 메서드를 직접 사용하는 대신 기본 생성자가 필요한 이유는 무엇입니까?

  13. 13

    숫자에 대한 16 진수 표기법으로 코드를 작성하는 이유는 무엇입니까?

  14. 14

    지속하기 전에 비즈니스 로직에서 유효성을 검사하는 것으로 충분합니까? 아니면 중요한 데이터에 대해 그 위에 트리거를 사용해야합니까?

  15. 15

    snapd 서비스가 왜 그렇게 많은 데이터를 사용합니까?

  16. 16

    iTunes가 왜 그렇게 많은 데이터를 사용합니까?

  17. 17

    snapd 서비스가 왜 그렇게 많은 데이터를 사용합니까?

  18. 18

    기본 초기화를위한 16 진수 표기법에 대한 질문

  19. 19

    왜 우리는 KeyEvent.VK_를 사용합니까? 대신 단순히 문자를 사용

  20. 20

    자바 : 자바 4 판에서 생각하기. 여기에서 16 진수를 사용하는 이유는 무엇입니까?

  21. 21

    이 컨텍스트에서 단일 기본 키 대신 복합 기본 키를 사용하면 어떤 이점이 있습니까?

  22. 22

    왜 누군가가 스레드를 사용하는 대신 서비스를 생성하지 않고 바인드하기를 원합니까?

  23. 23

    나는 기본 자원에 대한 영어가 아닌 다른 언어를 사용할 수 있습니까?

  24. 24

    for 루프에서 프로세스를 분기하는 대신 병렬을 사용할 가치가 있습니까?

  25. 25

    for 루프에서 프로세스를 분기하는 대신 병렬을 사용할 가치가 있습니까?

  26. 26

    왜 PhantomReference의 대기열에는 WeakReference를하거나하는 SoftReference보다 더 많은 GC 사이클을한다?

  27. 27

    bash 스크립트에서 읽기를 사용하는 대신 문자열을 배열에 지원합니까?

  28. 28

    Entity Framework Core에 기본 키가있을 때 항상 .FirstOrDefault () 대신 .Find ()를 사용해야합니까?

  29. 29

    iOS 앱에서 사용 가능한 기본 이미지 편집기를 사용할 수 있습니까?

뜨겁다태그

보관