Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1947869
  • 博文数量: 424
  • 博客积分: 1291
  • 博客等级: 中尉
  • 技术积分: 2682
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-13 01:34
个人简介

linux oracle 网络安全 编程

文章分类

全部博文(424)

文章存档

2016年(22)

2015年(53)

2014年(57)

2013年(242)

2012年(50)

分类: C/C++

2013-03-17 00:45:41

C语言标准中的逻辑位移和算术位移

在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

阅读(1640) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~