C语言置零直接 =0不就好了,为什么要按位与?
C语言置零直接 =0不就好了,为什么要按位与?
-----
网友解答:
-----
为了把一个变量置零而采用位与的方法 这个方法不太常见。但是采用变量与自己异或的方法,这个方法很常见。
如果直接令一个变量等于0,那么需要消耗额外的内存和额外的时钟周期。
如果用按位操作的话,就会节约至少两个时钟周期,而且节约这个变量所占据的内存大小的内存或指令空间。
-----
网友解答:
-----
比如你在64位系统上定义了一个unsigned int变量,用来保存一个数量,这个时候,你这个变量仅仅表示一个数的大小,那么置零的时候直接=0就可以了。
Int占用4个字节,共32个bit,有时候为了空间利用率,这个int的每个位都可以用来表示一个bool值的时候,按位与表示的意义就是每个标记位都重置成零。
所以根据你代码需求,使用方法不一样,表达出的语义不一样而已。
-----
网友解答:
-----
提出问题的人,估计不懂程序吧。置零是把某个数字清零,全部为零。按位与是为了判断某位是不是有数值,一般用来做标记位。
-----
网友解答:
-----
首先你没有搞懂应用场景。常见有两个场景会这么做。
1、驱动嵌入式开发,为了减少内存使用,提高计算速度,对应硬件的寄存器位。
2、通信领域的TCPIP头部结构,关于各种数据的状态位。是为了减少数据包,提高通信速度。
-----
网友解答:
-----
首先你需要知道什么叫bit
-----
网友解答:
-----
位操作 一般用于 底层驱动程序的 寄存器值 设置 设置场合, 那寄存机值 设置,为什么要 进行 按位与呢? 把 寄存器 原来的值 读出来,把 想 保留原值的 bit 设置为1 ,其余想清零的bit 设置为 0,再与原值 按位 与 一下,就可以 有些位 保留原值,有些位 设置为0, 同样 按位 或 可以 有些位 保留原值,有些位 设置成1。
-----
网友解答:
-----
xor eax,eax
和
mov eax,0
的区别…
-----
网友解答:
-----
等于零需要读取内存,太慢了
异或自身不需要,快得多
不过根本上是编译器优化问题,完全可以识别等于零的时候自动优化成异或
也许已经支持了?
-----
网友解答:
-----
不能影响别人写程序
------------------
推荐阅读:
下一篇: 金陵十二钗正册都有谁?