位运算
来源:互联网 发布:xmind8破解补丁 mac 编辑:程序博客网 时间:2024/06/05 06:41
先看下面一段代码:
#include <stdio.h>int main(int argc , char *argv[]){unsigned short int i = 0 ;unsigned char ii = 255 ;int j = 8,p,q ;p = j << 1 ;q = j >> 1 ;i = i - 1 ;ii = ii + 1 ;printf("i = %d\n",i) ;printf("ii = %d\n",ii) ;printf("p = %d\n",p) ;printf("q = %d\n",q) ;return 0 ;}
上述代码中,变量i是一个unsigned short int类型,在32位平台下大小是2个字节,因此其无符号类型的大小范围为0~65535,。i赋值之后为0,内存中的数据为0x0000,。当执行了i = i - 1 ;之后,内存中的数据变为0xffff,所以结果就是65535。
变量ii是一个unsigned short char类型,大小是1个字节,因此其无符号类型的大小范围为0~255,。ii赋值之后为255,内存中的数据为0xff。当执行了ii = ii + 1 ;之后,内存中的数据变为0x00,所以结果就是0.
左移操作<<相当于乘法操作,>>n相当于乘以2^n。右移操作相当于除法操作,>>n相当于除以2^n。因此,对与变量p和q的输出分别是16和4.
通过以上分析可以看出,对于无符号结果的问题,我们需要十分清楚数据在内存中的大小以及其表达形式。另外,我们需要知道移位操作是最有效率的(可以代替乘除法),因此在嵌入式系统编程或者其他许多需要高效率的地方能够得到运用。
下面是程序运行出的结果:
1 i = 65535
2 ii = 0
3 p = 16
4 q = 4
阅读全文
0 0
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- Multisim注意事项1
- 使用真机进行IOS功能测试代码覆盖率统计
- 新加坡:迈向智慧国家
- 跳跃问题
- 数据结构二静态链表
- 位运算
- python,C#,JAVA字符数组byte[]的MD5
- 打印机共享疑难杂症(不断更新...)
- NSOJ 组合数
- BZOJ 1877: [SDOI2009]晨跑 费用流拆点
- 解决matplotlib库show()方法不显示图片
- 基础入门---springMVC和spring如何web实现下载
- 03_希尔排序(ShellSort)
- UDP