C语言标准中的逻辑位移和算术位移
2011-07-06 12:05
337 查看
在C语言中,涉及位移的运算符有2个,>>表示右移,<<则表示左移。
而汇编指令中,SHL和SHR表示逻辑左移和逻辑右移,SAR和SAL表示算术左移和算术右移。
其中,逻辑左移和算术左移都是寄存器二进制位整体向左移动,并在右边补0。
而右移则不同,逻辑右移是整体向右移,并在左边补0,而算术左移则是根据原符号位的值补与其相同的值。
那么如何在C语言中分别实现逻辑和算术位移呢?根据C标准,如果在位移运算符左边的变量是有符号数,如int,char,short等,编译产生的
汇编指令是算术位移指令,如果该变量是无符号数,如unsigned int,unsigned char等,编译产生的汇编指令则是逻辑位移指令。
转自:http://blog.csdn.net/namelcx/article/details/6252486
而汇编指令中,SHL和SHR表示逻辑左移和逻辑右移,SAR和SAL表示算术左移和算术右移。
其中,逻辑左移和算术左移都是寄存器二进制位整体向左移动,并在右边补0。
而右移则不同,逻辑右移是整体向右移,并在左边补0,而算术左移则是根据原符号位的值补与其相同的值。
那么如何在C语言中分别实现逻辑和算术位移呢?根据C标准,如果在位移运算符左边的变量是有符号数,如int,char,short等,编译产生的
汇编指令是算术位移指令,如果该变量是无符号数,如unsigned int,unsigned char等,编译产生的汇编指令则是逻辑位移指令。
转自:http://blog.csdn.net/namelcx/article/details/6252486
相关文章推荐
- C语言标准中的逻辑位移和算术位移
- C语言标准中的逻辑位移和算术位移
- C语言之逻辑移位与算术移位
- c语言中的右移是逻辑右移还是算术右移的问题
- 【C语言/C++】算术移位和逻辑移位以及一道移位的题目
- 探寻算术右移与逻辑右移C语言
- C语言中的运算符>>和<<是算术移位而非逻辑移位
- C语言的逻辑右移和算术右移
- C和指针 第五章 逻辑位移与算术位移
- C语言 算术移位和逻辑移位
- C语言中的逻辑右移和算术左移
- C语言算术、赋值、关系、逻辑运算详细剖析---
- 关于循环位移指令ROL,RCL ;逻辑右移指令 SHR , 算术右移指令 SAR
- 【C语言/C++】算术移位和逻辑移位以及一道移位的题目
- C语言 算术左移、右移和逻辑左移、右移
- 逻辑右移、算术右移、逻辑左移和算术左移
- C语言算术运算符和算术表达式
- MISRA工业标准C语言编程规范
- 第03天C语言(03):算术运算符-优先级以及结合性
- C语言的标准