8位整数表示、补码与位运算
计算机基础
原笔记只留下进制、补码与位运算目录;本页已补充下方 8 位整数推演。进制换算与相关算法可继续阅读:
下面补齐固定位宽整数的解释规则。示例统一使用8位;数学整数、位模式和语言运算规则应分别讨论。
从位模式解释数值
无符号8位数的范围为0到255。补码把最高位赋予权重-128,其余位仍为64、32、16、8、4、2、1,所以11111111解释为-128+127=-1。对于最高位为1的模式,也可先按无符号求值U,再算U-256。
查看图表代码
原码、反码与补码的差别
以-5为例,先写+5为00000101。原码仅把符号位设为1,得到10000101;反码对正数逐位取反,得到11111010;补码在反码上加1,得到11111011。原码与反码各有正零、负零,8位补码只有一个零,范围是-128到127。
查看图表代码
这种低8位运算说明模256的位模式关系,不意味着所有语言的有符号整数溢出都允许回绕。尤其-128没有可表示的8位正数相反数;整数提升、位宽和移位规则需要查目标语言规范。
位运算用于状态组合
设读、写、执行分别占低三位中的100、010、001。权限110与010按位与得到010,说明写位已设置;与101按位与可清掉写位,结果100。按位或用于置位,异或用于翻转,不能把异或当作幂运算。
查看图表代码
按位取反涉及整个整数位宽,清位掩码应限定到目标位数;负数右移的结果也不能跨语言一概而论。