微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我在哪里可以找到C的位移指南?

我看过 What are bitwise shift (bit-shift) operators and how do they work?,但我仍然觉得比特移位的概念很难理解.

有人能指出我在C中进行位移的更基本指导的方向.我希望它会很长,因为它需要覆盖整个主题.

我真的不明白,但我想学习它,所以任何帮助将不胜感激.

我正在学习k& r,这就是这个,所以我可以做练习.我理解基础知识,但我仍然无法做正确的位移操作.

编辑这里是K& R的表现让我难过的

练习2-6:写一个函数setbits(x,p,n,y),它返回x,其中n位位于位置p,位于y的最右边n位,其他位保持不变.

练习2-7:写一个函数invert(x,n),其中n位以poisiton p反转开始(即1变为0,反之亦然),其他不变.

练习2-8:写一个函数rightrot(x,返回整数x的值,向右旋转n位位置

练习2-9:在二进制补码系统中,x& =(x-1)删除x中最右边的1位.解释原因,使用此观察来编写更快的bitcount版本

这些是来自k& R(c编程语言)书籍的练习,它是最好的c书,但是我在理解位移时遇到了麻烦,所以我遇到了这些练习的问题.

解决方法

比特移位只不过是字面意思:向左或向右移动给定序列中的所有比特.

您需要记住的是,每个十进制数(如6,7,3,2)都表示为计算机内存中的一系列位.所以如果你在一段C代码中找到这样的东西:

(7 >> 1)

这意味着7的基础二进制表示中的位将向右移位1个位置.

我认为您引用的链接中的解释非常清楚.也许你自己在纸上写下一系列的比特并按照引用的链接操纵它们可以提供帮助.

或许您可能还不太了解计算机如何在内部处理数字.在这种情况下,在学习位移之前,您需要阅读相关内容.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐