Files
2025-02-SystemProgramming/notes/1.md
2025-09-18 14:39:12 +09:00

1.1 KiB

Bits, Bytes, and Integers

Integers

Representation

Conversion

Mapping Between signed and unsigned

Maintain bit pattern

so the conversion of negative value of the signed or value over the T_MAX results different interpreted value.

Expanding, Truncating

expanding of $w$-bit signed integer

X = x_{w-1}x_{w-2}\cdots x_0 where s = x_{w-1}

expanding it to $w+k$-bit signed int:

X = s_{k}s_{k-1} \cdots s_1 x_{w-1}\cdots x_0,\quad \text{where}\, s_i = s

truncation of $w$-bit signed integer

first k bit change

C Puzzle


int x = foo();
int y = bar();

unsigned ux = x;
unsigned uy = y;
  • x < 0 -> ((x*2) < 0)
    • false: underflow
  • ux >= 0
    • it's converted to ux >= 0u so true for all ux
  • x & 7 == 7 -> (x << 30) < 0
    • true
  • ux > -1
    • always false, -1 = uint_max
  • x > y -> -x < -y
    • false
  • x * x >= 0
    • false
  • x > 0 && y > 0 -> x + y > 0
  • x >= 0 -> -x <= 0
  • x <= 0 -> -x >= 0
  • (x|-x) >> 31 == -1
  • ux >> 3 == ux/8
  • x >> 3 == x/8
  • x & (x-1) != 0
    • true