2021-09-28
1
有符号整数的二进制最高位为符号位,$0$ 表示正数,$1$ 表示负数。
2
反码指将二进制原码的数值位逐位取反。
正整数的补码就是它的原码,负整数的补码是它的补码加 $1$。
3
一个正整数减去一个正整数可以看作一个正整数加上一个负整数:
$A_原 - B_原 = A_原 + (-B)_补 - 2^m$
2021-10-08
1
$float$ 类型变量在计算机中用 $4$ 个字节($32$ 位)存储:
SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
将十进制数改写成 $n imes 2^m$($1 leq n < 2$)。
S:符号位,$0$ 为正数,$1$ 为负数。
E:指数位,$m$ 加上 $127$ 后的二进制数($m$ 的范围为 $-127 sim 128$)。
M:底数位,$n$ 减去 $1$ 后,不断乘以 $2$ 并进行如下操作;
若结果大于等于 $1$,则从左至右填入一个 $1$,并将计算值减 $1$;若结果小于 $1$,则从左至右填入一个 $0$。
2021-10-29
1
变量的存储类型包括 $auto$(自动型)、$register$(寄存器型)、$extern$(外部参照型)、$static$(静态型)。
2
自动型变量 $auto$
在函数内或复合语句中定义自动型变量时 $auto$ 可缺省。
自动型变量只能作内部变量,其作用域是声明该变量的函数或复合语句。不同函数或复合语句中声明的具有相同名字的各个局部变量之间没有任何关系。
int main() { int x = 5; printf("x = %d ", x); if (x > 0) { int x = 10; printf("x = %d ", x); } printf("x = %d ", x + 2); return 0; } // x = 5 x = 10 x = 7
第二个 $printf$ 输出时,虽然 $if$ 外定义的 $x$ 变量的内存还没释放,但规定以内层说明优先,即相当于内层说明的变量 $x$ 是另外一个变量 $x'$,在其所在的花括号内如果不包括更深层次的同名变量说明,则其中所引用 $x$ 就是 $x'$。