一 数据宽度
1 计算机只能识别0和1两个数字0。
2 在数学上,数字的大小不受限制,但在计算机中,由于受硬件的制约,数据都是有长度限制的,超过宽度的限制将会被抛弃。
(1)以下是4位宽度表示,假设计算机只能存储4位2进制数.
无符号数:从0逆时针依次为 0 1 2 3 4 5 6 7 8 9 A B C D E F
有符号数:正数
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 |
负数
-1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 |
F | E | D | C | B | A | 9 | 8 |
1111 | 1110 | 1101 | 1100 | 1011 | 1010 | 1001 | 1000 |
该圆逆时针来说时从小到大,只不过从中间分为负数,负数也是从小到大。
简单来说,最高位为0表示正数,为1表示负数(只针对于有符号数)。
3 几个重要的计量单位
BYTE 字节 8BIT
WORD 字 16BIT 2字节
DWORD 双字 32BIT 字节
二 逻辑运算
1 或(or |) 只要有一个为1就是1
2 与(and &) 两个都为1才是1
3 异或(xor ^)不一样为1
4 非(not !)1是0 0是1
5 问题:cpu计算2+3
首先将2 和 3分别存储到一个寄存器上 ,分别记作 0010和0011,然后进行“异或”运算
0010 | |
xor | 0011 |
结果 | 0001 |
再将0001放入到另一个寄存器当中
接着计算“与”
0010 | |
And | 0011 |
结果 | 0010 |
将“与”的结果的1向前移动一位后存放在一个寄存器,如果该结果(0100)首位为0则“异或”运算的结果就是正确结果。若不是则重复上述运算。
计算0100和0001的“异或”运算以及“与”运算
0001 | 0001 | ||
xor | 0100 | and | 0100 |
结果 | 0101 | 结果 | 0000 |
因为“与”运算结果首位为0,则“异或”的运算结果就是正确答案,同样的0101转化为十进制是5。