前面的博客讲解了有符号整数的表示和运算,这篇文章来学习无符号整数是如何表示和运算的
无符号整数就是我们说的自然数就是0,1,2,3,4这些。在语言我们看到的unsigned short,unsigned int类型就是无符号整数,前面的unsigned表示是无符号的,后面的short,int表示这个整型类型占多少字节。
如何表示?
还是以机器字长为8位的机器来讲解。
真值表示的二进制数放到寄存器中,如果位置不够就补全,如果数字太长超过了寄存器所能存储的最大位数就会发生溢出,只保留低位的8位
1. 全部二进制位都是数值位,没有符号位,第i位的位权是2的i次方-1
2.机械字长位n或者说n bit 的无符号整数可以表示的范围是0到2的n次方-1(因为第n位的位权是2的n次方-1,全部位置都是1就是最大值,如果在加上1就是2的n次方,但是至多只有n位,所以最大值就是2的n次方-1)超过范围就溢出,意味着计算机不能处理这么多。
3.可以表示最小的数是全为0(真值就为0),最大的数就是全为1(真值就为2的n次方-1)
加法运算
就很简单就是从最低位开始,按位相加,向更高位进位。和我们熟悉的十进制加法一样,不同的是二进制只有0和1,逢2进1
减法运算
1.“被减数”不变,“减数”全部位按位取反、末位+1,减法转换为加法。
2.最低位开始按位相加,向高位进位
比如真值为99和9的两个数,二进制数表示为01100011和00001001。99-9=90;
把真值为0表示的二进制数00001001先变形(全部位按位取反、末位+1,减法转换为加法)为11110111,之后再相加
变形
相加之后的结果,高位溢出。