基础知识
D(decimal)10
B(binary)2
H(hexadecimal)16
O(octal)8
二进制数和十进制数的转换
十进制转换为二进制:
1、降幂法
2、除法:多用除法
- 把要转换的十进制数的整数部分不断除以2,并记下余数,知道商为0为止。从下向上写。
- 对于被转换的十进制数的小数部分则应不断乘以2,并记下其整数部分,直到结果的小数部分为0为止。从上向下写。
为了便于对二进制数的描述,应该选择一种易于与二进制数相互转换的数制。
计算机中常用的字符是采用8位二进制数组成的一个字节来表示的。
二进制数和十六进制数的转换
由于十六进制数的基数是2的幂,所以转换十分简单。
二进制数转换成十六进制数:每4位组成一组,直接用16进制数表示就行。
如:11001111001= 0110 0111 1001 = 679H
十六进制数转换成二进制数:把16进制中的每一位用4位2进制表示。
如: A 5 C 7
A5C7 (16)= 1010 0101 1100 0111B
十进制数和十六进制数的转换
十六进制数转换成十进制数:各种十六进制数与其对应权重的乘积之和。
十进制数转换成十六进制数:
1、降幂法
2、除法:常用
把要转换的十进制数的整数部分不断除以16,并记下余数,直到商为0为止。
对于十进制的小数部分,不断乘以16,记下整数部分,直到小数部分为0为止。
计算机中数和字符的表示
在机器中,把一个数连同其符号在内数值化表示的数称为机器数。一般用最高有效位来表示数的符号,正数用0表示,负数用1表示。机器数可以用不同的码制来表示,常用的有原码,补码和反码表示法,由于大多数机器都采用补码表示法,80x86也是这样。
补码表示法中正数用符号-绝对值表示,即数的最高有效位为0表示符号为正,树的其余部分则表示树的绝对值。负数X用2n-|X|来表示,其中n为机器的字长。
机器字长:CPU一次可处理的二进制代码位数,通常寄存器长度等于机器字长
存储字长:一个存储单元的长度
指令字长:一个指令字包含二进制代码的位数
[-1]补 = 256 - 1 = 255 = 1111 1111 B
[-127]补 = 256 - 127 = 129= 1000 0001 B
[-0]补 = 256 = 0000 0000B 所以补码表示法中0只有一种表示。
对于1000 0000这个数,在不骂表示法中被定义为-128。这样8为补码能表示的范围就是-128~+127。
简单的负数补码表示
先写出整数的补码表示,然后将其按位求反,末位加一。
符号扩展问题,正数前面补0,负数前面补1。
n位二进制原码和反码:-2(n-1)-1 ~ +2(n-1)-1
n位补码表示的数的表述范围:-2n-1 ~ +2(n-1)-1
在机器里,为了扩大表数范围,可以用二个机器字(高位字和低位字)来表示一个机器数,称为双字常数或双精度数。
补码的加法和减法
加法和减法最高有效位向高位的进位自动丢失而不影响运算的结果,机器为了某种需要把这一进位值保存在标志寄存器的进位位C中
无符号整数
在某种情况下,要处理的输全是正数,此时再保留符号位就没有意义了。我们可以把最高有效位也当作数值处理。此时范围N>=1&&N<=2n-1
字符表示法
ASCII ,其中低7位为字符的ASCII值,最高位一般用作校验位。
几种基本逻辑运算
与
或
非
异或