2023年C语言位运算符优秀.docx

上传人:1319****208 文档编号:93615829 上传时间:2023-07-09 格式:DOCX 页数:12 大小:13.50KB
返回 下载 相关 举报
2023年C语言位运算符优秀.docx_第1页
第1页 / 共12页
2023年C语言位运算符优秀.docx_第2页
第2页 / 共12页
点击查看更多>>
资源描述

《2023年C语言位运算符优秀.docx》由会员分享,可在线阅读,更多相关《2023年C语言位运算符优秀.docx(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2023年C语言位运算符优秀 在日常学习、工作或生活中,大家总少不了接触作文或者范文吧,通过文章可以把我们那些零零散散的思想,聚集在一块。写范文的时候须要留意什么呢?有哪些格式须要留意呢?这里我整理了一些优秀的范文,希望对大家有所帮助,下面我们就来了解一下吧。 C语言位运算符篇一 c语言实习总结 举荐度: c语言课程设计个人总结 举荐度: c语言程序设计试验报告 举荐度: c语言程序设计心得体会 举荐度: c语言程序设计的试验报告 举荐度: 相关举荐 导语:c语言的设计目标是供应一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不须要任何运行环境支持便能运行的编程语言。下面我们来看看

2、c语言位运算,希望对大家有所帮助。 c语言位运算。所谓位运算,就是对一个比特(bit)位进行操作。比特(bit)是一个电子元器件,8个比特构成一个字节(byte),它已经是粒度最小的可操作单元了。 一个比特(bit)位只有 0 和 1 两个取值,只有参加运算的两个位都为 1 时,结果才为 1,否则为 0。例如11为 1,00为 0,10也为 0,这和逻辑运算符特别类似。 c语言中不能干脆运用二进制,两边的操作数可以是十进制、八进制、十六进制,它们在内存中最终都是以二进制形式存储,就是对这些内存中的二进制位进行运算。其他的位运算符也是相同的道理。 例如,9 5可以转换成如下的运算: 0000 0

3、000 - 0000 0000 - 0000 0000 - 0000 1001 (9 在内存中的存储) 0000 0000 - 0000 0000 - 0000 0000 - 0000 0101 (5 在内存中的存储) - 0000 0000 - 0000 0000 - 0000 0000 - 0000 0001 (1 在内存中的存储) 也就是说,按位与运算会对参加运算的两个数的全部二进制位进行运算,9 5的结果为 1。 又如,-9 5可以转换成如下的运算: 1111 1111 - 1111 1111 - 1111 1111 - 1111 0111 (-9 在内存中的存储) 0000 0000

4、 - 0000 0000 - 0000 0000 - 0000 0101 (5 在内存中的存储) - 0000 0000 - 0000 0000 - 0000 0000 - 0000 0101 (5 在内存中的存储) -9 5的结果是 5。 关于正数和负数在内存中的存储形式,我们已在教程整数在内存中是如何存储的中进行了讲解。 再强调一遍,是依据内存中的二进制位进行运算的,而不是数据的二进制形式;其他位运算符也一样。以-95为例,-9 的在内存中的存储和 -9 的二进制形式迥然不同: 1111 1111 - 1111 1111 - 1111 1111 - 1111 0111 (-9 在内存中的存

5、储) -0000 0000 - 0000 0000 - 0000 0000 - 0000 1001 (-9 的二进制形式,前面多余的 0 可以抹掉) 按位与运算通常用来对某些位清 0,或者保留某些位。例如要把 n 的高 16 位清 0 ,保留低 16 位,可以进行n 0xffff运算(0xffff 在内存中的存储形式为 0000 0000 - 0000 0000 - 1111 1111 - 1111 1111)。 对上面的分析进行检验。 00001. #include 00002. 00003. int main() 00004. int n = 0x8fa6002d; 00005. prin

6、tf(%d, %d, %x, 9 5, -9 5, n 0xffff); 00006. return 0; 00007. 运行结果: 1, 5, 2d 参加|运算的两个二进制位有一个为 1 时,结果就为 1,两个都为 0 时结果才为 0。例如1|1为1,0|0为0,1|0为1,这和逻辑运算中的|特别类似。 例如,9 | 5可以转换成如下的运算: 0000 0000 - 0000 0000 - 0000 0000 - 0000 1001 (9 在内存中的存储) | 0000 0000 - 0000 0000 - 0000 0000 - 0000 0101 (5 在内存中的存储) - 0000 0

7、000 - 0000 0000 - 0000 0000 - 0000 1101 (13 在内存中的存储) 9 | 5的结果为 13。 又如,-9 | 5可以转换成如下的运算: 1111 1111 - 1111 1111 - 1111 1111 - 1111 0111 (-9 在内存中的存储) | 0000 0000 - 0000 0000 - 0000 0000 - 0000 0101 (5 在内存中的存储) - 1111 1111 - 1111 1111 - 1111 1111 - 1111 0111 (-9 在内存中的存储) -9 | 5的结果是 -9。 按位或运算可以用来将某些位置 1,

8、或者保留某些位。例如要把 n 的高 16 位置 1,保留低 16 位,可以进行n | 0xffff0000运算(0xffff0000 在内存中的存储形式为 1111 1111 - 1111 1111 - 0000 0000 - 0000 0000)。 对上面的分析进行校验。 00001. #include 00002. 00003. int main() 00004. int n = 0x2d; 00005. printf(%d, %d, %x, 9 | 5, -9 | 5, n | 0xffff0000); 00006. return 0; 00007. 运行结果: 13, -9, ffff

9、002d 参加运算两个二进制位不同时,结果为 1,相同时结果为 0。例如01为1,00为0,11为0。 例如,9 5可以转换成如下的运算: 0000 0000 - 0000 0000 - 0000 0000 - 0000 1001 (9 在内存中的存储) 0000 0000 - 0000 0000 - 0000 0000 - 0000 0101 (5 在内存中的存储) - 0000 0000 - 0000 0000 - 0000 0000 - 0000 1100 (12 在内存中的存储) 9 5的结果为 12。 又如,-9 5可以转换成如下的.运算: 1111 1111 - 1111 1111

10、 - 1111 1111 - 1111 0111 (-9 在内存中的存储) 0000 0000 - 0000 0000 - 0000 0000 - 0000 0101 (5 在内存中的存储) - 1111 1111 - 1111 1111 - 1111 1111 - 1111 0010 (-14 在内存中的存储) -9 5的结果是 -14。 按位异或运算可以用来将某些二进制位反转。例如要把 n 的高 16 位反转,保留低 16 位,可以进行n 0xffff0000运算(0xffff0000 在内存中的存储形式为 1111 1111 - 1111 1111 - 0000 0000 - 0000

11、0000)。 对上面的分析进行校验。 00001. #include 00002. 00003. int main() 00004. unsigned n = 0x0a07002d; 00005. printf(%d, %d, %x, 9 5, -9 5, n 0xffff0000); 00006. return 0; 00007. 运行结果: 12, -14, f5f8002d 取反运算符为单目运算符,右结合性,作用是对参加运算的二进制位取反。例如1为0,0为1,这和逻辑运算中的!特别类似。 例如,9可以转换为如下的运算: 0000 0000 - 0000 0000 - 0000 0000

12、- 0000 1001 (9 在内存中的存储) - 1111 1111 - 1111 1111 - 1111 1111 - 1111 0110 (-10 在内存中的存储) 所以9的结果为 -10。 例如,-9可以转换为如下的运算: 1111 1111 - 1111 1111 - 1111 1111 - 1111 0111 (-9 在内存中的存储) - 0000 0000 - 0000 0000 - 0000 0000 - 0000 1000 (9 在内存中的存储) 所以-9的结果为 8。 对上面的分析进行校验。 00001. #include 00002. 00003. int main()

13、00004. printf(%d, %d, 9, -9 ); 00005. return 0; 00006. 运行结果: -10, 8 左移运算符<<用来把操作数的各个二进制位全部左移若干位,高位丢弃,低位补0。 例如,9<<3可以转换为如下的运算: << 0000 0000 - 0000 0000 - 0000 0000 - 0000 1001 (9 在内存中的存储) - 0000 0000 - 0000 0000 - 0000 0000 - 0100 1000 (72 在内存中的存储) 所以9<<3的结果为 72。 又如,(-9)<&l

14、t;3可以转换为如下的运算: << 1111 1111 - 1111 1111 - 1111 1111 - 1111 0111 (-9 在内存中的存储) - 1111 1111 - 1111 1111 - 1111 1111 - 1011 1000 (-72 在内存中的存储) 所以(-9)<<3的结果为 -72 假如数据较小,被丢弃的高位不包含 1,那么左移 n 位相当于乘以 2 的 n 次方。 对上面的结果进行校验。 00001. #include 00002. 00003. int main() 00004. printf(%d, %d, 9<<3, (

15、-9)<<3 ); 00005. return 0; 00006. 运行结果: 72, -72 右移运算符>>用来把操作数的各个二进制位全部右移若干位,低位丢弃,高位补 0 或 1。假如数据的最高位是 0,那么就补 0;假如最高位是 1,那么就补 1。 例如,9>>3可以转换为如下的运算: >> 0000 0000 - 0000 0000 - 0000 0000 - 0000 1001 (9 在内存中的存储) - 0000 0000 - 0000 0000 - 0000 0000 - 0000 0001 (1 在内存中的存储) 所以9>&g

16、t;3的结果为 1。 又如,(-9)>>3可以转换为如下的运算: >> 1111 1111 - 1111 1111 - 1111 1111 - 1111 0111 (-9 在内存中的存储) - 1111 1111 - 1111 1111 - 1111 1111 - 1111 1110 (-2 在内存中的存储) 所以(-9)>>3的结果为 -2 假如被丢弃的低位不包含 1,那么右移 n 位相当于除以 2 的 n 次方(但被移除的位中常常会包含 1)。 对上面的结果进行校验。 00001. #include 00002. 00003. int main() 00004. printf(%d, %d, 9>>3, (-9)>>3 ); 00005. return 0; 00006. 运行结果: 1, -2 s(content_relate);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁