本节内容 计算机不会做加法 视频提供:昆山爱达人信息技术有限公司 官网地址:www.bcdaren.com 联系QQ:1250121864 QQ交流群 :49759272 联系电话:0512-57882866
通过之前的课程我们知道了计算机如何存储数字(整数),在后续的课程中我还会告诉大家计算机如何存储浮点数,如何存储字母,如何存储汉字等等。 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 要点回顾 通过之前的课程我们知道了计算机如何存储数字(整数),在后续的课程中我还会告诉大家计算机如何存储浮点数,如何存储字母,如何存储汉字等等。 仅仅知道计算机如何存储数字还不够,这节课我们来了解一下计算机如何做运算: 计算机只认识0和1,计算机能做的运算归根结底也就是直接对0和1做运算(通常称为位运算),举例来说: 2+3 = ? 2-3 = ? 计算机都是通过位运算实现的!
1) 有些功能必须通过位运算才能实现:比如写调试器,判断CPU的各种状态位 2) 大公司面试题:比如2*8 效率最高的实现方式 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 为什么要学习位运算? 1) 有些功能必须通过位运算才能实现:比如写调试器,判断CPU的各种状态位 2) 大公司面试题:比如2*8 效率最高的实现方式
1、与运算 两个位都为1时,结果才为1 比如: 1011 0001 and(&) 1101 1000 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 1、与运算 两个位都为1时,结果才为1 比如: 1011 0001 and(&) 1101 1000 ------------------------------------------ 1001 0000
2、或运算 只要有一个为1就是1 比如: 1011 0001 or(|) 1101 1000 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 2、或运算 只要有一个为1就是1 比如: 1011 0001 or(|) 1101 1000 ------------------------------------------ 1111 1001
3、异或运算 不一样的时候是1 比如: 1011 0001 xor(^) 1101 1000 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 3、异或运算 不一样的时候是1 比如: 1011 0001 xor(^) 1101 1000 ------------------------------------------ 0110 1001
昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 4、非运算 0就是1 1就是0 比如: not(~) 1101 1000 ------------------------------------------ 0010 0111
各二进位全部左移若干位,高位丢弃,低位补0 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 5、左移 各二进位全部左移若干位,高位丢弃,低位补0 比如: shl(<<) 1101 1000 左移2位为:0110 0000
各二进位全部右移若干位,低位丢弃,高位补0或者补符号位 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 6、右移 各二进位全部右移若干位,低位丢弃,高位补0或者补符号位 比如: shr 1101 0101 0011 0101 对应C语言(>>) unsigned int a = 10; printf("%d\n",a>>2); sar 1101 0101 1111 0101 int a = 10;
昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 7、总结 计算机只会位运算
<汇编、C/C++线上班>学员可见 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 课后练习: <汇编、C/C++线上班>学员可见