什么是数据宽度
让我们想象计算机中存储的数据是将无数个0和1存储在无数个容器里面,每个容器可以容纳不同数量的二进制数,有的可以容纳4个有的可以容纳8个。这里的容器在计算机里就是数据宽度,其代表着数据受计算机硬件的限制而拥有的长度限制。
那么如果存储的数超过了容器的数据宽度会发生什么?
那么计算机会将从最高位起多出来的位数直接丢弃。
例如一个数据宽度为8为的二进制数1111 1111,此时再加上1则变为1 0000 0000,但是数据宽度只有8位,则将最高位移除,变为0000 0000。
有符号数和无符号数
计算机的所存的二进制数本身不分正负,正负由程序所决定。程序若决定不分正负,则数据为无符号数;程序若决定区分正度,则数据位有符号数。
二进制 | 0 | 1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
无符号数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
有符号数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
这时会发现当二进制数最高位从0变为1时(此处的二进制为数据宽度为4位的二进制数,因此前几位都用0填满),有符号数变为负数。
汇编中实际上并没有4位宽度的容器,通常是8位16位。
那么8位二进制数0111 1111的有符号数为7F,若再进一位变成1000 0000,他的有符号数则变为-80
计量单位
其中一个bit能容纳一个0或1
BYTE | 字节 | 8bit | 1字节 |
WORD | 字 | 16bit | 2字节 |
DWORD | 双字 | 32bit | 4字节 |