小古银的官方网站(完整教程):http://www.xiaoguyin.com/
C++入门教程视频:https://www.bilibili.com/video/av20868986/
目录
加法
以010 + 010
为例子:加号两边的数值的右边第一位都是0,相加得0;中间那一位都是1,相加得2,所以需要进位,结果变为0;左边第一位都是0,相加得0,再加上进的位,所以结果是1。那么最后结果就是100
。也就是十进制的2 + 2
的结果是4
。
注意:而C++中的二进制的运算都是有一个前提条件,就是必须固定位数再进行运算,如果进位时超出位数那么超出部分将会被舍弃。例如要相加的二进制数值是3位数,110 + 010
,按照加法运算结果应该是1000
,因为位数已经固定三位,左边超出的一位将被舍弃,所以结果是000
。
提示:二进制表示数值时,左边的0是可以省略的,把左边的0写出来是为了方便讲解,如二进制的00000010
可以省略写成二进制的10
,相当于十进制的00123456
也可以简写成123456
。由于C++的二进制运算是固定位数的,所以就算你省略了左边的0,程序也是知道左边应该补上多少个0。
基础示例
#include <iostream>
int main(void)
{
std::cout << "0b010 + 0b010 = " << (0b010 + 0b010) << std::endl;
unsigned int value = 4294967295;
std::cout << (value + 1) << std::endl;
return 0;
}
输出结果:
0b010 + 0b010 = 4
0
基础讲解
二进制的010
加上二进制的010
结果是二进制的100
,也就是十进制2
加上十进制2
等于十进制的4
。
unsigned int
是保存非负整数的int
类型,它的最大值是4294967295
,也就是二进制32位都是1
的值,而且unsigned int
是用固定的32位二进制来保存数据的,所以当它加上1
的时候,就会因为进位而超出一个