文档介绍:实验三实验报告
实验目的及要求
掌握运算符重载的定义及实现。
掌握具有运算符重载的应用。
实验设备
计算机、
Microsoft Visu且1 C++
实验内容
(1)将一个16位二进制数表示成0和1的字符序列,即用一个字符数组來存放这个二 进制数。在这个类中设直两个构造函数,一个是传递整数参数的,另一个是传递字符串参数 的。因为用户在创建对彖吋传递的二进制数,可能是以整数形式给出,也可能是以数字串形 式给出,系统应该都能接受。另外有一个类型转换函数int(),用來将类类型向報型转换. 程
序中的两个重载运算符"+ ”,“-” ,用来完成两个二进制数之间的加减运算。
#include "iostrezun. h"
#inelude "string. h,z
#include ,zconio. h"
class binary { //定义二进制类 char bits[16] ; //二进制字模数组 public:
binary (char *) ; //字符串参数构造函数
binary (int); //整型参数构造函数
friend binary opera tor + (binary, binary) ; //重载 ”
friend binary operator -(binary, binary) ; //重载 “ operator int(); //类类型转换函数
void print();
};
binary: : bin ary (char *nuni)
{
int isrc=strlen(num)-1; //字符串长度T为最低位
int idest=15;
while(isrc>=0 && idcst>=0)
bits[idest--] = (num[isrc--]='O' ?' O' 1') ; // 逐位赋值
while(idest>=0) bits[idest—]= 0* ; // 空高位值0
}
binary::binary(int num)
{
for(int i=15; i>=0;i—)
{ bits[i] = ( (1) ) ; //求余数
num»=l; //移位,相当于整除2
valueH(nl・ bi ts〔iv'l09 70 二)l(r}2・ bits〔i〕H'l0- 70 二)+bo!TOM res・ bits〔iv(valueH 丄 一 一 valuexlv I./"。)- borrow" (Vai ueH 丄二 borrowT0&&(valueH0 二 value=l)216)八
return res八
一
binary二operator int()
一
unsigned vdlueHs
for(int iHO八 i〈H15i i++)
vdlue"( (3) ) + (bits〔i〕==J"7?l?r-
return value-
)
void binary二prinL()
chQr str〔17〕-
strncpy(str bits》16)-
Str〔16vxo9 - cout〈〈stl・〈〈^n「
binary operator + (binary birk-ry n2) unsigned Carry3 unsigned w二ue binary resHJJ foxint iJlD i〉H0 八 i I—)
(
valueu(nl・ bitziY1'0- 20 二)+ ( (2)Tcalry」
res・ bi-ts〔iY(VQlue%2HH0p 0-•\1)
carryHval ue〉〉l -
-
return res八
binary operator —(binary nl》binary rl2)
亠
unsigned borrowHs
int value-
binary resH'oJ
for (int iH15 八 i〉u5?i I—)
binary nl二"1011";
binary n2=int(nl)+15;
binary n3=n1-b i nary(7);
nl. print ();
n2. print ();
n3. print ();
cout<<int(n2)+5<<endl;
cout«n2-binary (5) <<cndl;
cout«n3+binary (5) <<e