1613

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

         全部学习汇总 GreyZhang/g_unix: some basic learning about unix operating system. (github.com)

         这一次看一下位操作的章节。

         如果是逻辑位操作其实不需要考虑大小端。

1. 移位操作在快速乘除法中经常用到。

2. 这里提到了一个算是移位其实跟前面的基础移位是相同的。

1. 循环移位这个大学的时候也是接触使用过的。但是到了工作之中用的很少了。

2. 下面这个算法用来实现计算二进制中有多少个1countingbits。

         关于位操作有按照位执行的与或非以及亦或操作。

         这里列出了很多位操作的例子而这些例子在嵌入式中很常见。我觉得类似的操作直接用高级语言编写可能得到的汇编不会有什么效率损失因为操作映射太直接了。

         这里接下来就提到了高级语言中的位操作这里提到的是C语言。而这部分功能我在工作的多年中的确是非常频繁使用过。

         在使用应用案例中提到了UNIX或者说POSIX中文件权限属性的操作。这个操作的实现使用的其实就是位操作。

1. 大小端判断程序比较简单。我考虑不出来什么时候我会用到但是倒是也可以收集到我的工具箱中这样的辅助功能对于写出通用软件来说比较有帮助。

2. TCP/IP的数据包结构中就包含有按照大端存储的信息如果遇到类似的处理需要考虑数据转换。

         类似的设计好巧妙也是用来实现counting bits功能。相比逐个遍历来说效率的确有了很大的提升。然而这个也不是全部后面接着提出来的算法其中有一个hacker_popcnt的算法就是一个更优解。而其核心处理手段就是位操作。我把它纳入到了我的工具箱中GreyZhang/c_units: A small piece of code which can be reuse anywhere, I call it a unit. This is a collection of unit in C language! Ok, yes, it would be my toolbox. (github.com)

         看起来类似的知识已经越来越脱离PC的汇编主题了。后面的阅读速度应该加快推进了。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6