전체 글291 부동소수점 방식에서 0.1*0.1 이 0.01이 아닌 이유와 해결 방법 결론부터 이야기하면 부동소수점은 근사치이며 소수를 정확히 표현할 수 없다. 부동소수점 방식을 사용할 때 0.1*0.1은 0.01이 아니다. 크롬 개발자도구 등을 열어 0.1 * 0.1 을 계산해보면 알 수 있다. 왜 이럴까?부동소수점 방식(IEEE 754)으로 저장된 십진수 0.1은 근사치를 사용하게 된다. 왜 근사치를 사용하는지, 왜 오차가 생기는지 알기 위해서는 0.1이 어떻게 표현되는지 알아야 한다. 이전 포스팅에서 자세한 내용을 설명했는데 링크를 남겨놓는다. (자세한 부동소수점 내용은 다음 글 참조: https://bako94.tistory.com/328)간단히 리마인드하자면, 부동소수점 방식에서는 소수점 오른쪽에 있는 숫자들을 2진수로 변환할때 2를 곱하는 것을 반복하여 0과 1을 뽑아내게 .. 2024. 5. 10. 부동소수점 곱셈 방법 부동소수점을 곱셈하는 방법은 간단하다.우리가 잘 알고 있는 10진수 곱셈 방식을 사용한다. 10진수 곱셈 방법을 먼저 살펴보자30 x 50 = 1500이다. 구체적인 과정은 (3x10)x(5x10) = (3x5)x(10x10) = (15)x(10^2) = 15x10^2 와 같은 방식을 따른다.2진수 곱셈 방법을 살펴보자0.25 는 0.01(2) , 4는 100(2)이다. 아래에서는 2진수의 (2)는 생략0.01 x 100 = (1.00x 2^-2) x (1x2^2) = (1.00x1)x(2^-2 x 2^2) = (1.00) x (2^0) = (1.00)x1 = 1.00 이다.10진수로 0.25 x 4 를 하여도 1이 나오는데 1은 2진수로도 1이니 잘 계산된 것을 알 수 있다.곱셈은 십진수를 계산하던 것.. 2024. 5. 9. 소수점을 표현하는 방법 1) 이진기수법인간은 기본적으로 10진법을 사용하지만, 컴퓨터가 이해할 수 있는 숫자는 0과 1 뿐이다. 컴퓨터는 숫자와 문자, 이미지와 같은 데이터를 0과 1 만을 사용하여 저장한다. 0과 1을 사용하는 방법을 2진법이라 부른다.따라서, 컴퓨터에서 소수점을 다루는 방법을 알려면 10진수로 표현된 소수점을 2진수로 어떻게 표현하는지 알아야한다.일단 소수점 앞부분은 기존 정수를 변환하는 방법과 동일하다. 소수점 뒤에 있는 숫자들을 하나씩 2진수로 바꿔버리는 방법을 생각해볼 수 있지만 그렇게 하면 아래 예시처럼 서로 다른 10진수 숫자가 2진수로 변환되었을 때 같아지는 문제가 있다.잘못된 변환 방법 예시) 변환된 2진수가 같아짐0.9 -> 0.10010.41 -> 0.100 1소수점 뒤에 숫자는 정수부에서.. 2024. 5. 8. csrf 이란 csrf(cross-site request forgery)란 공격자가 웹 보안 공격 중 유저가 의도하지 않은 행동을 하게 하는 것인데, 다음 세 가지 조건을 만족해야 성립한다.1. 공격자가 의도한 행동이 어플리케이션 안에서 일어난다.2. 쿠키 기반 세션을 사용하는 어플리케이션이어야 한다.3. 어플리케이션 개발자가 예측하지 못한 요청 파라미터여야 한다.간단하게 예를 들면 쿠키 기반 세션을 가진 웹 어플리케이션이라면, 로그인 인증이 되면 클라이언트 측 쿠키에 세션 유지를 목적으로 특정한 값(세션 키 등) 저장하여 사용할 수 있다. 이후 클라이언트서버 간의 통신 간 쿠키에 세션 인증이 되는 값이 있기 때문에 별도의 인증 없이도 권한에 대한 인증이 통과된다. my-website.com 사이트에서 비밀번호 변경.. 2024. 5. 2. 이전 1 2 3 4 5 6 7 ··· 73 다음