第10章位运算 为了节省内存空间,在系统软件中常将多个标志状 态简单地组合在一起,存储到一个字节(或字)中。C 语言是为研制系统软件而设计的,所以她提供了实现将 标志状态从标志字节中分离出来的位运算功能。 所谓位运算是指,按二进制位进行的运算 10.1数值在计算机中的表示 10.2位运算 上章 10.3位段 道闹最
返回本章首页 下一页 上一页 第10章 位运算 为了节省内存空间,在系统软件中常将多个标志状 态简单地组合在一起,存储到一个字节(或字)中。C 语言是为研制系统软件而设计的,所以她提供了实现将 标志状态从标志字节中分离出来的位运算功能。 所谓位运算是指,按二进制位进行的运算。 10.1 数值在计算机中的表示 10.2 位运算 10.3 位段 上一章 下一章 返回目录
10.1数值在计算机中的表示 1二进制位与字节 计算机系统的内存储器,是由许多称为字节的单元组 成的,1个字节由8个二进制位(bit)构成,每位的取值为 0/1。最右端的那1位称为“最低位”,编号为0;最左端的 那1位称为“最高位”,而且从最低位到最高位顺序,依次 编号。图11-1是1个字节各二进制位的编号 765432 0 图11-11个字节各二进制位的编号 2数值的原码表示 数值的原码表示是指,将最高位用作符号位(0表示止 数,1表示负数),其余各位代表数值本身的绝对值(以 进制形式表示)的表示形式。为简化描述起见,本约定 用1个字节表示1个整数
返回本章首页 下一页 上一页 10.1 数值在计算机中的表示 1.二进制位与字节 计算机系统的内存储器,是由许多称为字节的单元组 成的,1个字节由8个二进制位(bit)构成,每位的取值为 0/1。最右端的那1位称为“最低位”,编号为0;最左端的 那1位称为“最高位”,而且从最低位到最高位顺序,依次 编号。图11-1是1个字节各二进制位的编号。 图11-1 1个字节各二进制位的编号 2.数值的原码表示 数值的原码表示是指,将最高位用作符号位(0表示正 数,1表示负数),其余各位代表数值本身的绝对值(以二 进制形式表示)的表示形式。为简化描述起见,本节约定 用1个字节表示1个整数。 7 6 5 4 3 2 1 0
例如,+9的原码是00001001 L→,符号位上的0表示正数 9的原码是10001001。 L→,符号位上的1表示负数 3数值的反码表示 数值的反码表示分两种情况: (1)正数的反码:与原码相同 例如,+9的反码是00001001 (2)负数的反码:符号位为1,其余各位为该数 对值的原码按位取反(1变0、0变1)。 例如,-9的反码:因为是负数,则符号位为“1”; 其余7位为-9的绝对值+9的原码0001001按位取反为 110110,所以-9的反码是11110110 下一顶
返回本章首页 下一页 上一页 例如,+9的原码是00001001 └→符号位上的0表示正数 -9的原码是10001001。 └→符号位上的1表示负数 3.数值的反码表示 数值的反码表示分两种情况: (1)正数的反码:与原码相同。 例如,+9的反码是00001001。 (2)负数的反码:符号位为1,其余各位为该数绝 对值的原码按位取反(1变0、0变1)。 例如,-9的反码:因为是负数,则符号位为“1” ; 其余7位为-9的绝对值+9的原码0001001 按位取反为 1110110,所以-9的反码是11110110
4数值的补码表示 数值的补码表示也分两种情况: (1)正数的补码:与原码相同。 例如,+9的补码是00001001。 (2)负数的补码:符号位为1,其余位为该数绝对值 的原码按位取反;然后整个数加1。 例如,9的补码:因为是负数,则符号位为“1”;其 余7位为-9的绝对值+9的原码0001001按位取反为1110110 再加1,所以9的补码是1111011 已知一个数的补码,求原码的操作分两种情况 (1)如果补码的符号位为“0”,表示是一个正数,走 以补码就是该数的原码。 2)如果补码的符号位为“1”,表示是一个负数,求 原码的操作可以是:符号位不变,共余位取反,(然后 整个数加1
返回本章首页 下一页 上一页 4.数值的补码表示 数值的补码表示也分两种情况: (1)正数的补码:与原码相同。 例如,+9的补码是00001001。 (2)负数的补码:符号位为1,其余位为该数绝对值 的原码按位取反;然后整个数加1。 例如,-9的补码:因为是负数,则符号位为“1”;其 余7位为-9的绝对值+9的原码0001001按位取反为1110110; 再加1,所以-9的补码是11110111。 已知一个数的补码,求原码的操作分两种情况: (1)如果补码的符号位为“0” ,表示是一个正数,所 以补码就是该数的原码。 (2)如果补码的符号位为“1” ,表示是一个负数,求 原码的操作可以是:符号位不变,其余各位取反,然后再 整个数加1
例如,已知一个补码为1111101,则原码是100001 (-7):因为符号位为“1”,表示是一个负数,所以该位 不变,仍为“1;其余7位11101取反后为0000110;再 加1,所以是10000111 5数值在计算机中的表示补码 在计算机系统中,数值一律用补码表示(存储),原 因在于:使用补码,可以将符号位和其它位统一处理; 同时,减法也可按加法来处理。另外,两个用补码表示 的数相加时,如果最高位(符号位)有进位,则进位被 舍弃。 下一顶
返回本章首页 下一页 上一页 例如,已知一个补码为11111001,则原码是10000111 (-7):因为符号位为“1” ,表示是一个负数,所以该位 不变,仍为“1”;其余7位1111001取反后为0000110;再 加1,所以是10000111。 5.数值在计算机中的表示──补码 在计算机系统中,数值一律用补码表示(存储),原 因在于:使用补码,可以将符号位和其它位统一处理; 同时,减法也可按加法来处理。另外,两个用补码表示 的数相加时,如果最高位(符号位)有进位,则进位被 舍弃