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程序就是执行主函数 ...
随机推荐
- consolel API大全-附测试结果
f 简介: JS中默认没有console对象, 这是某些浏览器提供的浏览器内置对象, 低版本IE就没有, 其他主流浏览器应该都有.它能看到结构话的东西,如果是alert,淡出一个对象就是[object ...
- [日常训练]string
Description 给定一个长度为$n$的字符串,串中的字符保证是前$k$个小写字母.你可以在字符串后再添加$m$个字符,使得新字符串所包含的不同的子序列数量尽量多.当然,前提是只能添加前$k$个 ...
- VPS服务商
1.vpsee http://www.vpsee.com 2.vps侦探 http://www.vpser.net/
- Codeforces Round #384 (Div. 2) B. Chloe and the sequence(规律题)
传送门 Description Chloe, the same as Vladik, is a competitive programmer. She didn't have any problems ...
- ajax-登陆+验证码
登陆用户名和密码判断+验证码验证 省略dao层和service层 1.生成验证码的number.jsp <%@ page contentType="image/jpeg" l ...
- 【转】一千行MySQL学习笔记
/* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ ...
- 使用django开发博客过程记录5——日期归档和视图重写
针对每条博客的观看次数我么是使用django的Mixin实现的: def get(self, request, *args, **kwargs): last_visit = request.sessi ...
- Android中使用ShareSDK集成分享功能
引言 现在APP开发集成分享功能已经是非常普遍的需求了.其他集成分享技术我没有使用过,今天我就来介绍下使用ShareSDK来进行分享功能开发的一些基本步骤和注意点,帮助朋友们避免一些坑.好了 ...
- java的锁机制
一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在Java里边就是拿到某个同步对象的锁(一个对象只有一把锁): 如果这个时候同步对象的锁被其他线程拿走了,他(这个线 ...
- ActiveMQ中的Destination高级特性(一)
---------------------------------------------------------------------------------------- Destination ...