해결된 질문
작성
·
358
·
수정됨
0
안녕하세요 선생님 질문이 2개 있습니다.
1) 15:05쯤에
"1byte의 메모리에 64bit 상수가 주소로 부여됩니다."
라는 의미가
단순히 저 메모리 창에서 메모리(1byte)에 대한 주소를 2^64 까지 부여할 수 있으니까 0x자릿수가 늘어난것이다.
라고 이해하면 맞나요..?
2) 추가적으로 a의 타입을 float , double로 바꾸는 경우 전혀 다른 값이 들어가던데 gpt를 통해 검색하니
Let's break down the hexadecimal representation "00 00 20 41" into binary and decode it:
Convert each hexadecimal digit into its corresponding 4-bit binary representation:
0: 0000
2: 0010
0: 0000
4: 0100
1: 0001
Concatenate the binary representations:
000000000000001000000100000001
Split the binary representation into its components based on the IEEE 754 format:
Sign bit (1 bit): 0 (positive value)
Exponent bits (8 bits): 00000000
Mantissa bits (23 bits): 00000100000000100000001
Apply the IEEE 754 formula:
Sign: 1^(0) = 1 (positive)
Exponent: 2^(0) - 127 = -127
Mantissa: 1.00000100000000100000001 (binary)
The final value is calculated as (1 + mantissa) * 2^(exponent):
(1 + 1.00000100000000100000001) * 2^(-127) = 1.00000100000000100000001 * 2^(-127) = 1.00000100000000100000001 * 2^(-23) * 2^(-104) ≈ 10
Therefore, the hexadecimal representation "00 00 20 41" corresponds to the floating-point value 10 in C.
이런식으로 설명해줬는데 부동소수점 관련된이야기인것을 알겠는데 자세히 알아야 하나요...?
답변 1
1
64비트 시스템은 1바이트 메모리에 64비트(2^64)주소를 부여해 관리합니다. 0x자릿수가 늘어난 것은 64비트 상수라서 그렇습니다.
이는 IEEE 754 표준과 관련된 내용입니다. 단정도 형식(float)과 배정도 형식(double)은 구조가 다르기 때문에 16진수로 봤을 때 같은 값으로 보여도 당연히 해석방식이 달라지면 전혀 엉뚱한 값이 됩니다. ChatGPT는 이를 좀 더 구체적으로 설명해주고 있는 것입니다.
참고하시기 바랍니다.
강의를 들으니 뒤에 다 내용이 나오는군요..ㅋㅋㅋ
답변 감사합니다.
태어나서 첨으로 Hxd로 막 수정하고 이런거 해보니까 너무 신기하고 재미있네요 감사합니다.