一、二进制数、位和字节
1) 数字计算机通过关闭和打开状态的组合来表示信息,这两种状态分别用0和1来表示
2) 计算机以2为基底表示的数字被称为二进制数
1.二进制整数
1) 通常,1字节包含8位;C语言用字节表示储存系统字符集所需的大小
2) 1字节(8位)从左往右分别编号7~0;每一位的编号对应2的相应指数
3) 在1字节中,编号是7的位被称为高阶位,编号是0的位被称为低阶位
4) 通常unsigned char用一字节表示的范围是0~255;signed char用一字节表示的范围是-128~+127
2.有符号整数
1) 有符号数用1位(如高阶位)储存符号,只剩下7位表示数字本身(假设储存在1字节中)
2) 二进制补码用1字节中的后7位表示0~127,高阶位位置为0;如果高阶位为1,表示的值为负
3) 从一个9位组合100000000(256的二进制形式)减去一个负数的位组合,结果是该负值的量
例: 假设一个负值的位组合是10000000
作为一个无符号字节,该组合为表示128;
作为一个有符号值,该组合表示负值,值为100000000 - 10000000 = 128,所以该数为-128
10000001是-127,11111111是-1;该方法可以表示-128~127范围内的数
4) 二进制补码的相反数是反转每一位(即0变为1,1变为0),然后加1
5) 二进制反码方法通过反转位组合中的每一位形成一个负数
3.二进制浮点数
1) 在二进制小数中,使用2的幂作为分母:
例: 二进制小数0.101 表示为 1/2+0/4+1/8(1*2^-1+0*2^-2+1*2^-3)
2) 为了在计算机中表示一个浮点数,要留出若干位存储二进制分数,其他位存储指数
二、其他进制数
1.八进制
1) 八进制是指八进制记数系统;该系统基于8的幂,用0~7表示
例: 八进制数0451: 4*8^2+5*8^1+1*8^0 = 297(十进制)
2) 每个八进制位对应3个二进制位;将八进制数转换为二进制形式时,不能去掉中间的0
八进制位 | 等价的二进制位 | 八进制位 | 等价的二进制位 |
---|---|---|---|
0 | 000 | 4 | 100 |
1 | 001 | 5 | 101 |
2 | 010 | 6 | 110 |
3 | 011 | 7 | 111 |
1.十六进制
1) 十六进制是指十六进制记数系统;该系统基于16的幂,用0~15表示数字
2) 由于没有单独的数表示10-15,所以用字母A-F表示
例: 十六进制数0xA3F表示为: 10*16^2+3*16^1+15*16^0 = 2623(十进制)
3) 由于没