*补码表示git
- 信息储存
- gcc -m32/64
当没有-m32或-m64参数时,通常状况下会生成跟操做系统位数一致的代码
gcc -m32 能够在64位机上(好比实验楼的环境)生成32位的代码安全
- 数值运算
- 信息的存储
- 整数的表示
- 符号数与无符号数之间的转换
有符号数转换为无符号数时,负数转换为大的正数(能够理解为原值加上2的n次方),而正数保持不变。
x<0 T2Uw(x)=x+2^w
x>0 T2Uw(x)=x+2^w
(w表示数据类型的位数)
无符号数转换为有符号数时,对于小的数将保持原值,对于大的数则转换为负数(能够理解为原值减去2的n次方)
u<2^(w-1) U2Tw(u)=u
u>=2^(w-1) U2Tw(u)=u-2^w
(w表示数据类型的位数)网络
- 截断数字
截断一个数字可能会改变其值,这也是值溢出的一种形式。,
无符号数x,将其截断成k位,mod 2^k。
有符号数x,先将其看做无符号数截断,而后在转换成有符号数。学习
- 补码的非
补码非运算
对于范围在[-2^(w-1),2^(w-1))中的x,补码的非运算有以下两种状况:
x=-2^(w-1)时,为-2^(w-1)
x>-2^(w-1)时,为-x
位级补码非
对每一位求补,再对结果+1
设k为最右面的1的位置,将k左边的全部位取反。编码