C++程序设计基础(第5版)(上)周霭如【5 集合与结构】

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

华南理工大学计算机学院周霭如2016华南理工大学计算机学院周霭如2016第5章集合与结构5.1位运算5.2集合5.3结构5.4结构数组5.5链表小结华南理工大学计算机学院周霭如20165.1位运算计算机的存储器采用二进制表示数据计算机系统的存储器用每8位为1字节编址不同类型的数据由不同字节长度存储每一个数位的取值,只有两个可能值:0或者1位运算能够直接处理数据中每一位的值为方便起见,本节叙述中用一个字节表示一个正整数华南理工大学计算机学院周霭如20165.1位运算位运算符&按位与&=按位与赋值|按位或|=按位或赋值^按位异或^=按位异或赋值左移=左移赋值右移=右移赋值~按位取反华南理工大学计算机学院周霭如20161.按位与运算左右操作数对应的每一位分别做逻辑与运算1000001010&29&00011101800001000若有语句cout10&29=(10&29)endl;则显示结果为10&29=8华南理工大学计算机学院周霭如20162.按位或运算左右操作数对应的每一位分别做逻辑或运算1000001010|29|000111013100011111若有语句cout10|29=(10|29)endl;则显示结果为10|29=31华南理工大学计算机学院周霭如20163.按位异或运算当左右操作数对应位不相同,即当且仅当其中一个为1时,位操作的结果才为11000001010^29^000111012300010111若有语句cout10|29=(10|29)endl;则显示结果为10^29=23华南理工大学计算机学院周霭如20164.左移按右操作数指定位数,将左操作数按位向左移动,腾空数位补01020000101024000101000若有语句cout102=(102)endl;则显示结果为102=40对于一个整数,每左移一位就相当于乘以2(结果不溢出时)华南理工大学计算机学院周霭如20164.左移按右操作数指定位数,将左操作数按位向左移动,腾空数位补0若有语句cout-102=(-102)endl;则显示结果为-102=-40做算术左移时,只要不溢出,不会移动符号位对于一个整数,每左移一位就相当于乘以2(结果不溢出时)华南理工大学计算机学院周霭如20165.右移按右操作数指定位数,将左操作数按位向右移动122000011002300000011若有语句cout122=(122)endl;则显示结果为122=3对于一个整数,每右移一位就相当于整除以2华南理工大学计算机学院周霭如20165.右移按右操作数指定位数,将左操作数按位向右移动若有语句cout“-122=(-122)endl;则显示结果为-122=-3对于一个整数,每右移一位就相当于整除以2做算术右移时,不会移动符号位华南理工大学计算机学院周霭如20166.按位取反单目运算。对操作数按位做逻辑非~10~00001010-1111110101若有语句cout~10=(~10)endl;则显示结果为~10=-11负数在计算机中用补码表示。11110101是-11的补码华南理工大学计算机学院周霭如20167.位运算的复合赋值位运算的5个复合赋值与其他复合赋值的操作形式一致例如,若有inta,b;则a&=b等价于a=a&ba|=b等价于a=a|ba^=b等价于a=a^ba=b等价于a=aba=b等价于a=ab华南理工大学计算机学院周霭如2016当一个整数的二进制串中只有一个数位为1时,称为掩码程序中通常借助掩码对数据按位进行测试掩码01000000华南理工大学计算机学院周霭如2016#includeiostreamusingnamespacestd;voidbitDisplay(unsignedvalue);voidmain(){unsignedx;coutEnteranunsignedinteger:;cinx;bitDisplay(x);//调用函数,以二进制形式输出正整数}【例5-1】按二进制位串形式输出正整数的值。华南理工大学计算机学院周霭如2016voidbitDisplay(unsignedvalue){unsignedc;unsignedbitMask=131;//掩码,最高位置1coutvalue'=';for(c=1;c=32;c++){cout(value&bitMask?'1':'0');//输出value的最高位value=1;//value左移1位if(c%8==0)cout'';}coutendl;}【例5-1】按二进制位串形式输出正整数的值。0000110110000000valuebitMask0华南理工大学计算机学院周霭如2016【例5-1】按二进制位串形式输出正整数的值。voidbitDisplay(unsignedvalue){unsignedc;unsignedbitMask=131;//掩码,最高位置1coutvalue'=';for(c=1;c=32;c++){cout(value&bitMask?'1':'0');//输出value的最高位value=1;//value左移1位if(c%8==0)cout'';}coutendl;}0001101010000000value0bitMask华南理工大学计算机学院周霭如2016【例5-1】按二进制位串形式输出正整数的值。voidbitDisplay(unsignedvalue){unsignedc;unsignedbitMask=131;//掩码,最高位置1coutvalue'=';for(c=1;c=32;c++){cout(value&bitMask?'1':'0');//输出value的最高位value=1;//value左移1位if(c%8==0)cout'';}coutendl;}0011010010000000value0bitMask华南理工大学计算机学院周霭如2016【例5-1】按二进制位串形式输出正整数的值。voidbitDisplay(unsignedvalue){unsignedc;unsignedbitMask=131;//掩码,最高位置1coutvalue'=';for(c=1;c=32;c++){cout(value&bitMask?'1':'0');//输出value的最高位value=1;//value左移1位if(c%8==0)cout'';}coutendl;}0110100010000000value0bitMask华南理工大学计算机学院周霭如2016【例5-1】按二进制位串形式输出正整数的值。voidbitDisplay(unsignedvalue){unsignedc;unsignedbitMask=131;//掩码,最高位置1coutvalue'=';for(c=1;c=32;c++){cout(value&bitMask?'1':'0');//输出value的最高位value=1;//value左移1位if(c%8==0)cout'';}coutendl;}1101000010000000value1bitMask华南理工大学计算机学院周霭如2016【例5-1】按二进制位串形式输出正整数的值。voidbitDisplay(unsignedvalue){unsignedc;unsignedbitMask=131;//掩码,最高位置1coutvalue'=';for(c=1;c=32;c++){cout(value&bitMask?'1':'0');//输出value的最高位value=1;//value左移1位if(c%8==0)cout'';}coutendl;}1010000010000000value1bitMask华南理工大学计算机学院周霭如2016【例5-1】按二进制位串形式输出正整数的值。voidbitDisplay(unsignedvalue){unsignedc;unsignedbitMask=131;//掩码,最高位置1coutvalue'=';for(c=1;c=32;c++){cout(value&bitMask?'1':'0');//输出value的最高位value=1;//value左移1位if(c%8==0)cout'';}coutendl;}0100000010000000value0bitMask华南理工大学计算机学院周霭如2016【例5-1】按二进制位串形式输出正整数的值。voidbitDisplay(unsignedvalue){unsignedc;unsignedbitMask=131;//掩码,最高位置1coutvalue'=';for(c=1;c=32;c++){cout(value&bitMask?'1':'0');//输出value的最高位value=1;//value左移1位if(c%8==0)cout'';}coutendl;}1000000010000000value1bitMask华南理工大学计算机学院周霭如2016【例5-1】按二进制位串形式输出正整数的值。voidbitDisplay(unsignedvalue){unsignedc;unsignedbitMask=131;//掩码,最高位置1coutvalue'=';for(c=1;c=32;c++){cout(value&bitMask?'1':'0');//输出value的最高位value=1;//value左移1位if(c%8==0)cout'';}coutendl;}华南理工大学计算机学院周霭如2016【例5-2】位运算测试#includeiostreamusingnamespacestd;voidbitDisplay(unsignedvalue);intmain(){unsignedn1,n2;n1=214;n2=5;coutn1=\t;bitDisplay(n1);coutn2=\t“;bitDisplay(n2);coutn1'&'n2=\t;bitDisplay(n1&n2);coutn1'|'n2=\t;bitDisplay(n1|n2);coutn1'^'n2=\t;bitDisplay(n1^n2);coutn1n2=\t;bitDisplay(n1n2);coutn1n2=\t;bitDisplay(n1n2);cout'~'n1=\t“;bitDisplay(~n1);}华南理工大学计算机学院周霭如2016#includeiostreamusingnamespacestd;voidbitDisplay(unsignedvalue);intmain(){unsignedn1,n2;n1=214;n2=5;coutn1=\t;bitDisplay(n1);coutn2=\t“;bitDisplay(n2);coutn1'&'n2=\t;bitDisplay(n1&n2);coutn1'|'n2=\t;bitDisplay(n1|n2);coutn1'^'n2=\t;bitDisplay(n1^n2);coutn1n2=\t;bitDisplay(n1n2);coutn1n2=\t;bit

1 / 394
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功