π€ μ μμ νν λ°©λ²
μ»΄ν¨ν°μμλ μ μλ₯Ό μ΄λ€ λ°©λ²μΌλ‘ νννλμ§ μμ보λλ‘ νκ² μ΅λλ€.
ν¬κ² λΆνΈκ° μλ μ μ, BCDμ½λ, λΆνΈλ₯Ό κ°λ μ μλ₯Ό μ£Όλ‘ μμλ³΄κ² μ΅λλ€.
κ²°λ‘ λΆν° λ§νμλ©΄ μ»΄ν¨ν°λ 2μ 보μλ₯Ό ν΅ν΄ λΆνΈν μ μλ₯Ό νμνκΈ°λ‘ μ νμ΅λλ€.
λΉλΆνΈν μμμ 2μ 보μν μ μλ‘ λ³ννλ κ²μ λλ€.
μ½κ²λ§ν΄ λΉνΈλ₯Ό λͺ¨λ λ€μ§κ³ 1μ λνλ©΄ λ©λλ€.
μλμμ μ‘°κΈ λ μμΈνκ² μμλ³΄κ² μ΅λλ€.
π μ μμ μΈμ½λ©
λΉλΆνΈν μ μμ λΆνΈν μ μλ κ°λ¨νκ² μμμΌλ‘ λνλΌ μ μμ΅λλ€.
λΉλΆνΈν μ μλ $B2U(X)$λΌκ³ λ νλλ° μλμ κ°μ΄ λνλΌ μ μμ΅λλ€.
λΆνΈν μ μ(2μ 보μ)λ μλμ κ°μ΄ λνλΌ μ μμ΅λλ€.
μ΄λ₯Ό ν΅ν΄ κΈΈμ΄κ° WλΉνΈμΈ μ μμ νν κ°λ₯ν λ²μλ₯Ό μΆμΈ‘ν΄λ³Ό μ μμ΅λλ€.
λΉλΆνΈν μ μμ κ²½μ° μ΅μκ°μ $0$ μ΅λκ°μ $2^w - 1$μ λλ€.
λΆνΈν μ μ μ¦ 2μ 보μλ‘ ννν μ μλ μ΅μκ°μ $-2^{w-1}$ μ΅λκ°μ $2^{w-1} - 1$μ λλ€
μλμ νλ₯Ό ν΅ν΄ μ΄ν΄λ₯Ό λμΈ μ μμ΅λλ€.
π λ°μ΄ν° νμ λ³ν μΊμ€ν
C μΈμ΄μμλ λΆνΈν μ μλ‘λΆν° λΉλΆνΈν μ μλ‘μ λ³νμ νμ©ν©λλ€.
μ΄λ λΉνΈ ννμλ λ³νκ° μμ΅λλ€.
νμ§λ§ λΆνΈν μ μ μ€ μμλ λΉλΆνΈν μ μλ‘ λ³ννμλ μμλ‘ λ³νλκΈ° λλ¬Έμ ν° μ€λ₯λ₯Ό μΌκΈ°ν μ μμ΅λλ€.
μλ₯Ό λ€μ΄ μλμ μ½λμμ $y = -15213$μ΄μ§λ§ λΉλΆνΈν μ μλ‘ λ³ννμλ 50323μ΄λΌλ μμ²λ μ°¨μ΄μ κ°μ μΆλ ₯ν©λλ€.
short int x = 15213;
unsinged short int ux = (unsigned short) x;
short int y = -15213;
unsinged short int uy = (unsinged short) y;
μ΄λ¬ν κ³Όμ μμ λ°μνλ μ€λ₯λ₯Ό μΊμ€ν 좩격μ΄λΌκ³ ν©λλ€.
π μ μμ μ°μ°
λΉλΆνΈν μ°μ°
λΉλΆνΈνμ λ§μ μ κ²½μ° μΌλ°μ μΈ λ§μ μ°μ°κ³Ό λμΌν©λλ€.
κΈΈμ΄κ° W λΉνΈμΈ μ μμ κ³μ°μ΄λΌκ³ κ°μ νμ λ, μ΅μμ λΉνΈλ₯Ό λμ΄κ°λ μ¦ $u + v$μ κ°μ΄ $2^w - 1$ λ³΄λ€ ν¬λ©΄ Carryκ° λ°μνκ³ μ΄ κ²½μ° Carryλ₯Ό 무μν©λλ€.
mod ν¨μ $S = UAdd_w(u, v) = (u + v) mod 2^w$λ‘ νμ κ°λ₯ν©λλ€.
λΆνΈν μ°μ°
λΉλΆνμμμ λ§μ κ³Ό λμΌνκ² μνν©λλ€.
λΉλΆνΈν μ°μ°κ³Ό λ¬λ¦¬ λΆνΈν μ°μ°μμλ λ κ°μ§ λ°©ν₯μΌλ‘ overflowκ° λ°μκ°λ₯νλ°
μ΄λ
$$u, v < 0, s ≥0$$
λλ
$$u, v ≥ 0, s < 0$$
μΌλ λ°μν©λλ€.
'Computer Science > System Programing' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μμ€ν νλ‘κ·Έλλ°] BombLab μ€μ΅ λ©λͺ¨μ₯ (2) | 2022.10.19 |
---|---|
[μμ€ν νλ‘κ·Έλλ°] μ€μμ νν λ° μ²λ¦¬ (0) | 2022.09.26 |
[μμ€ν νλ‘κ·Έλλ°] μ μμ νν (0) | 2022.09.24 |
[μμ€ν νλ‘κ·Έλλ°] μ»΄ν¨ν° μμ€ν (μ»΄ν¨ν° ꡬ쑰) (0) | 2022.09.20 |
[μμ€ν νλ‘κ·Έλλ°] μ»΄ν¨ν° μμ€ν (μ»΄νμΌ μμ€ν ) (0) | 2022.09.20 |