C语言移位算符">>"
右移算符>>是将二进制数的每一位右移。如:a=32,a>>2,就是将32的二进制数100000每一个二进制位向右移动两位。得到的是二进制数1000,也就是8。
#include <stdio.h>
int main(void)
{
int a=;
int a_move = (a>>);
printf("a_move=%d\n",a_move);
return ;
}
运行结果:
$ gcc -o aa_move aa_move.c
$ ./aa_move
a_move=
如果移位之后转成二进制显示将更明白
#include <stdio.h>
#include <string.h>
/*转换成其他进制的函数*/
char *change(int val, int base, char *retbuf )
{
static char *str = "0123456789ABCDEF";
char *p;
char buf[]; p = buf+;
*p = ; do { *--p = str[val % base]; } while( val /= base );
strcpy(retbuf,p);
return retbuf;
} void main()
{
int a=;
int j;
char buf[];
//显示成:十进制 二进制 八进制 十六进制
printf(" decimal binary octonary hexadecimal\n");
for(j=;j<;j++)
{
a = (a<<)+; //移位操作 change(a,,buf); //十进制
printf("a= %-8s",buf); change(a,,buf); //二进制
printf(" %-8s",buf); change(a,,buf); //八进制
printf(" %-8s",buf); change(a,,buf); //十六进制
printf(" %-8s\n",buf);
}
}
运行结果
$ gcc -o move move.c
$ ./move
decimal binary octonary hexadecimal
a= 1 1 1 1
a= 3 11 3 3
a= 7 111 7 7
a= 15 1111 17 F
a= 31 11111 37 1F
a= 63 111111 77 3F
a= 127 1111111 177 7F
a= 255 11111111 377 FF
tips:
2的几次方就是二级制中,1向左移多少位得到。如 2^(3) = 1UL <<3。
这在单位转换中很实用,例如将兆字节转为字节。1Megabyte = 2^10 Kilobyte = 2^10 * 2^10 Byte。那么512 Megabyte = 512 UL << 20。
C语言移位算符">>"的更多相关文章
- C语言移位运算符
位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算.位移位运算符分为左移和右移两种,均为双目运算符.第一运算对象是移位对象,第二个运算对象是所移的二进制位数. 位移位运算符的运算对象 ...
- C语言移位运算
移位运算有两种:>>(右移),<<(左移). a>>b表示将a的二进制值右移b位. a<<b 表示将a的二进制值左移 b位.要求 a和 b都是整型, b ...
- C语言移位
先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如: int i = 1;i = i << 2; //把i里的值左移2位 也就是说,1的2进制是00 ...
- IT兄弟连 JavaWeb教程 EL表达式中的运算
EL语言支持算符运算符.关系运算符和逻辑运算符等,以完成常见的数据处理操作.所有的运算符说明见表7.2. 表2 El表达式中的运算符
- SAS基础 -- SAS编程入门
SAS语言 -- 简介 SAS语言是一种专用的数据管理与分析语言,它提供了一种完善的编程语言.类似于计算机的高级语言,SAS用户只需要熟悉其命令.语句及简单的语法规则就可以做数据管理和分析处理工作 ...
- C变量和常量
变量定义 变量定义就是告诉编译器如何创建变量的储存,以及在何处创建变量的储存,变量定义指定了一个数据类型,并包含一个或者多个变量的列表: type variable_list //如: int i; ...
- C语言的移位操作符及位运算
C语言的移位操作符 位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算.位移位运算符分为左移和右移两种,均为双目运算符.第一运算对象是移位对象,第二个运算对象是所移的二进制位数. 位 ...
- javascript 核心语言笔记 4 - 表达式和运算符
表达式(expression)是 JavaScript 中的一个短语(phrases),JavaScript 解释器会将其计算(evaluate)出一个结果.程序中的常量.变量名.数组访问等都是表达式 ...
- 一:c语言(数据类型和运算符)
#include <stdio.h> /*就是一条预处理命令,它的作用是通知C语言编译系统在对C程序进行正式编译之前需做一些预处理工作.*/ int main() /*C程序就是执行主函数 ...
随机推荐
- git常用命令
开始的时候 git config --global user.name "Your Name" git config --global user.email "email ...
- UI输入控件
--UI输入控件 -- 输入控件 cc.uii.UIInput.new(table) --[[ 参数 table{ image 输入框图像,可以为图片名或者display.newScale9Sprit ...
- jQuery 树形菜单
树形菜单 在 jQuery easyu中其左侧的主菜单使用的是 easyui 中的 tree 组件,不是太熟悉,不过感觉不是太好用. 比如 easyui 中的 tree 需要单击分叉节点前的小三角,才 ...
- Uncaught RangeError: Maximum call stack size exceeded 超出最大调用值(个人解释)
写了段jq后,报这个错,度娘未解,灵光一闪,找到原因,上代码: Html 结构: <a href="javascript:;" class="item-pic&qu ...
- 贝塔阶段html及pdf模块测试
这次虽然工作内容是将c#的html及pdf处理程序移植到java中,但是由于重新编写代码使得先前的工作成果得不到利用,于是将其编写为dll,再在java端调用. 这使得在java端即便每个分支都到达, ...
- (转载)哈夫曼编码(Huffman)
转载自:click here 1.哈夫曼编码的起源: 哈夫曼编码是 1952 年由 David A. Huffman 提出的一种无损数据压缩的编码算法.哈夫曼编码先统计出每种字母在字符串里出现的频率, ...
- URL.createObjectURL和URL.revokeObjectURL
一.URL.createObjectURL URL.createObjectURL()方法会根据传入的参数创建一个指向该参数对象的URL. 这个URL的生命仅存在于它被创建的这个文档里,新的对象URL ...
- datagrid
<!DOCTYPE html><html><head> <style>body { font-family: Helvetica Neue, Aria ...
- es6学习笔记(1) let和const命令详解
let和const命令: Es6新增了let命令,声明变量,但与var不一样的,只在let命令所在的代码块内有效(如for循环之外let声明的变量就不再有效).并且let不像var那样会发生" ...
- 关于entityframework 自动生成实体类中加验证的属性重新生成后属性被覆盖解决办法
1.手动创建一个部分类 (你可以手动创建 partial class, 内容为空) [MetadataType(typeof(AppleMetadata))] public partial class ...