0
字节和位:
位运算:对数据的二进制位进行处理的运算。
字节byte:数据存取和数值计算的基本单元。
从内存中读取数据是以字节为单位,
向内存中写入数据也是已字节为最小单位,
将数值输出到文件和从文件获取数值时,最小单位也是字节。
位:大部分操作系统中,一个字节由8个位组成。
字长word
1 原码和补码:
在一个固定值的模mod下,一个数加另一个数正好可以归零,那么他们就互为补数。
在操作系统中,数值一律用补码来存储。
计算机的运算部件与寄存器都有一定字长的限制(假设字长为8),因此它的运算也是一种模运算。
模:把一个计量单位称之为模或模数。
机器数:数的符号和值均采用二进制的表示形式。【机器数在定点机和浮点机中的表示形式各不相同。】
这里的机器数均指在定点整数机中的表示形式。
【①最高位是符号位(0表示正数,1表示负数),②其余位为数值位,③小数点约定在数值位之后】
在计算机中,机器数有原码、反码、补码、变形原码、变形反码、变形补码和移码等多种形式。
机器数的真值:采用+和-表示的二进制数。【就是就是一种用正负号+二进制的数值表示数的方式】
原码true
form:一个数值的二进制值。最高位为符号位,其余位为数值位。
原码能表示的数的范围:
1,111,1111~1,000,0000
0,000,0000~0,111,1111
-127~-0
+0~127
共256个
非负数的补码:与原码相同。
负数的补码:符号位为1,其余位为该数绝对值的原码按位取反后,再加1.
8位2进制,1位用于表示符号,剩余7位表示数值,它的模数为2^7=128。
例:原码-> 补码 【以8位机为例】
十进制数 原码
补码
11
0000,1011 0000,1011
-15
1000,1111 (1111,0000+1)=1111,0001
例:补码 ->原码
已知一个数的补码,其求原码的过程,与已知原码求补码的过程完全一样。
十进制数
补码
原码
11
0000,1011 0000,1011
-15
1111,0001 (1,000,1110+1)=1000,1111
使用补码计算时,可以将符号位和其他位统一处理。
二进制 十进制 机器数(也是原码) 机器数的真值
反码
补码
0000,0000 0
0,000,0000
+0
0,000,0000 0,000,0000<---|
0000,0001 1
0,000,0001
1
0,000,0001
0,000,0001
|
0000,0010 2
0,000,0010
2
0,000,0010
0,000,0010
|
0000,0011 3
0,000,0011
3
0,000,0011
0,000,0011
|
...
|
0111,1101 125
0,111,1101
125
0,111,1101
0,111,1101 |
0111,1110 126
0,111,1110
126
0,111,1110
0,111,1110 |
0111,1111 127
0,111,1111
127
0,111,1111
0,111,1111
|
|
【+0和-0的补码都为0000,0000】
|
|
1000,0000 128
1,000,0000
-0
1,111,1111
0,000,0000----|
1000,0001 129
1,000,0001
-1
1,111,1110
1,111,1111
1000,0010 130
1,000,0010
-2
1,111,1101
1,111,1110
1000,0011 131
1,000,0011
-3
1,111,1100
1,111,1101
...
1111,1110 253
1,111,1101
-125
1,000,0010
1,000,0011
1111,1110 254
1,111,1110
-126
1,000,0001
1,000,0010
1111,1111 255
1,111,1111
-127
1,000,0000
1,000,0001
(-128) 【多余补码形式的数】 1,000,0000 -128
补码的设计目:
⑴使符号位能与有效值部分一起参加运算,从而简化运算规则.
⑵使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计.
例:补码的乘法运算
十进制数
原码 补码
-11 ----
1000,1011----1111,0101
× 10 ----0000,1010 ----0000,1010 ×
--------------------------------------
-110
0
|
11110101
0
|
11110101
|
--------------
|
100110010010
| ----
1110,1110 ----1001,0010