概述
利用位运算符实现二进制加法,将结果存入size+1大小的数组中输出,代码如下:
#include<iostream>
using namespace std;
#define size 8
int c, sig = 0,location = 8;
//c为存储当前位,sig为进位标志
void binary_add(int a, int b,int arr[]){
//当有进位时:
if (sig == 1){
//确定当前位
c = a^b;
//当两位相加后,如果不同:0/1
if (c != sig){
//相加:或操作
c = c | sig;
//标志位清除
sig = 0;
}
//两位相加后与sig相同:
else{
//如果同为1
if (c == sig == 1){
//异或
c = c^sig;
//有进位
sig = 1;
}
else{
sig = 0;
}
}
}
//首次进入或者无进位直接异或得出当前位
else{
c = a^b;
}
//如果都为1进位
if (a == 1 && b == 1){
sig = 1;
}
//cout << c << endl;
//将结果存入另一个数组
arr[location--] = c;
}
int main(){
int arr1[size] = { 1, 0, 1, 1, 0, 0, 1, 1 };
int arr2[size] = { 0, 1, 0, 1, 1, 0, 1, 1 };
int arr[size + 1];
for (int i = size - 1; i >= 0; i--){
binary_add(arr1[i], arr2[i],arr);
}
arr[0] = sig;
cout << " ";
for (int i = 0; i <size; i++){
cout << arr1[i];
}
cout << endl;
cout << "+";
for (int i = 0; i <size; i++){
cout << arr2[i];
}
cout << endl;
cout << "——————————"<<endl;
for (int i = 0; i <size+1; i++){
cout<<arr[i];
}
cout << endl;
}
最后
以上就是无心月饼为你收集整理的算法导论学习笔记2:二进制加法(c++实现)的全部内容,希望文章能够帮你解决算法导论学习笔记2:二进制加法(c++实现)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复