网站开发和维护合同,wordpress在哪儿打开,牌子网官网,东莞做公众号的网站#x1f339;开场语 亲爱的读者#xff0c;大家好#xff01;我是一名正在学习编程的高校生。在这个博客里#xff0c;我将和大家一起探讨编程技巧、分享实用工具#xff0c;并交流学习心得。希望通过我的博客#xff0c;你能学到有用的知识#xff0c;提高自己的技能开场语 亲爱的读者大家好我是一名正在学习编程的高校生。在这个博客里我将和大家一起探讨编程技巧、分享实用工具并交流学习心得。希望通过我的博客你能学到有用的知识提高自己的技能成为一名优秀的程序员。如果你有任何疑问或建议请随时在评论区留言让我们一起成长进步现在让我们开始这场知识之旅吧 个人主页 FEN03 文章专栏 C语言 文章目录 开场语▶️ 前言 1. 移位操作符 1.1 左移操作符 1.2 右移操作符 总结结束语 ▶️ 前言 本章节就让我们来学习移位操作符如有错误❌还请大佬们指出 1. 移位操作符 移位操作符分为2种分别为
左移操作符右移操作符
提示移位操作符只能对于整数 1.1 左移操作符 移位的规则左边丢弃右边补0
如我们把5左移1位
代码如下
//左移操作符
#includestdio.h
int main()
{int n 5; int m n 1; printf(n %d\n, n); printf(m %d\n, m); return 0;
}运行结果
n 经过左移1位最终得到的结果是10 如何进行左移的
我们知道数值5在内存中是以二进制的形式进行存储的如下图我们知道二进制表示形式有3种分别为原码反码补码。正数的原反补码相同而负数的原反补不相同需要进行转换。那么我们对其进行左移1位其实是对数值5的补码进行操作的如下图 上边的例子我们举的是正数负数又如何进行左移呢
代码如下
#includestdio.h
int main()
{int a -3; int b a 2; printf(a %d\n, a); printf(b %d\n, b); return 0;
}运行结果 负数是如何进行左移呢
例子中举得是-3左移2位我们需要把-3的原码写出来左移操作的是补码原码需要取反得到反码反码1得到补码。如下图 操作的是补码补码进行左移2位得到的就是左移后的补码但是我们看到的是原码所以还需要对补码进行转换得到原码才是我们在屏幕上看到的值。 小节
我们已经举例了2个分别是5和-3得到的结果分别是10和-12可以说左移操作符是有乘2的效果但是并不是所有的数都有着乘2的效果对于个别数来说是没有的。 1.2 右移操作符 右移操作符相对于左移操作符会分为2种至于是哪一种取决于编译器的实现但是大多数是采用算术右移 它们的运算规则
逻辑右移右边丢弃左边补0算术右移右边丢弃左边按原符号位值补 例子1
#includestdio.h
int main()
{int a 4; int b a 1; printf(a %d\n, a); printf(b %d\n, b);return 0;
}运行结果 如何进行右移
写出该值的原反补码如下正数的原反补码相同我们不需要对其进行任何的转换 例子1举的是正数负数又如何进行右移操作呢
例子2
#includestdio.h
int main()
{int n -8; int m n 2; printf(n %d\n, n); printf(m %d\n, m); return 0;
}运行结果 负数如何进行的呢 写出该数的原反补码因为是负数所以原反补码不相同需要进行转换如下 补码进行操作右移2位丢弃左边按原符号位值来补最后还需要进行原反补码的转换 小节
我们已经举例了2个分别是4和-8得到的结果分别是2和-2可以说右移操作符是有除2的效果但是并不是所有的数都有着除2的效果对于个别数来说是没有的。 总结 对于移位操作符我们只需要记住规则就可以当然了想要更好的了解还需要对二进制的三种表示形式原码反码补码有所了解。这是因为移位操作符操作的是二进制的补码。所以当我们得到原码还需要进行转换得到补码。 结束语 非常感谢您花时间阅读我的博客希望我的分享能为您带来收获。如果您对本文有任何想法或疑问欢迎在评论区留言交流。如果您喜欢我的博客请继续关注我会定期更新更多精彩内容。最后别忘了行动起来的力量让我们一起实践这些方法见证自己的成长和进步 再见祝您生活愉快