1K = 210 = 1024 (Kilo)编码
1M = 1024K = 220(Mega)spa
1G = 1024M = 230(Giga)设计
1T = 1024G = 240(Tera)3d
1P = 1024T = 250(Peta)orm
1个二进制位:bit (比特)blog
8个二进制位:Byte (字节) 1Byte = 8Bit内存
2个字节: Word (字) 1Word = 2Byte = 16bitci
数 制 | 基 数 | 数 码 |
二进制 Binaryit 八进制 Octalio 十进制 Decimal 十六进制 Hexadecimal
|
2 8 10 16
|
0,1 0,1,2,3,4,5,6,7 0,1,2,3,4,5,6,7,8,9 0,1,2,3,4,5,6,7,8,9 A,B,C,D,E,F |
二进制 十六进制 相通
十进制 二进制 十 到 二 降幂法(除法)
十进制 十六进制 十 到 二 降幂法(除法)
十六进制:十六进一,借一当十六
例: X = 00FFH Y = 5555H Z = X ^ Y = ?
X = 0000 0000 1111 1111 B
^ Y = 0101 0101 0101 0101 B
Z = 0101 0101 1010 1010 B
因此 Z= 55AAH
附:位运算之左移和右移
左移只有一种——高位丢弃,低位补0
右移有两种:一、逻辑右移——低位丢弃,高位补0
二、算术右移——低位丢弃,高位补充与最高位相同的值
一个机器字内的各个字节如何排列?
负数的二进制表示:补码+1
unsigned tag
实例(w = 32)
即:
建议:不能仅仅由于取值范围是非负数而使用
补码加法的溢出
局限性:只能精确地表示X/2k这类形式的数据(k为整数)
以上三个值二进制表示将会出现无限循环,如1/10的二进制表示小数部分出现0011的无限循环。
示例:
数轴上的分布:
向偶数舍入(Round-to-Even)
这是计算机内默认的舍入方式,也称为“向最近值的舍入”;其余方式会产生系统偏差。
关键的设计决策是肯定两个可能结果的中间数值的舍入:
对于二进制数而言:
一、规格化
二、舍入
三、调整(Postnormalize)
舍入可能致使溢出
包括单精度浮点数(single point floating)和双精度浮点数(double point floating)。
C语言中int(32bit)、float(32bit)和double(64bit)三种数据类型之间的转换规则:
示例:
定义:int x; float f=...; double d=... (d和f都不是NaN)
本章参考书籍:《Computer Systems-A Programmer's Perspective(2nd Edition)》