位运算实现十进制转换为二进制
代码如下:
#include <iostream> //将十进制数转化为二进制数,位运算的取位操作
using namespace std;
int main()
{
unsigned short i;
cout << "请输入一个小于65536的正整数" << endl;
cin >> i;
for(int j=15; j >= 0; j--)
{
if ( i & ( 1 << j) ) cout << "1";
else cout << "0";
}
cout << endl;
return 0;
}
分析:
分析一下这个程序的算法原理,顺便复习一下位运算的奇妙吧。
这是一个将无符号十进制数转化为标准16位二进制数的程序。
程序的主体部分,for语句从15递减到0,一共16次对二进制数的每一位的判断作操作。循环体内部的条件判断用到了位运算中的&运算(与运算)和<<运算(左移运算)。<<运算表示把1的二进制形式整体向左移j位,左移后低位补0,移出的高位部分被舍弃。例如,当j为15时,表达式(1<<j)的值为1000000000000000;当j为10时,值为0000010000000000。
所以i&(1<<j)的值相当于把i的二进制的第j位取出来(i的第j位与(1<<j)的第j位(由上述可以,为1)作与运算,只有当i的第j位为1时值为真)。循环后既得i的二进制形式。
有的童鞋可能觉得用mod(取余)运算照样可以达到效果,但是位运算的“个性”就决定了它直接对数据的二进制形式进行操作的快捷性(一般计算机的数据存储基本形式为二进制形式),两个相同算法的程序,用了位运算后会使程序速度上有提高。
以上所述就是本文的全部内容了,希望大家能够喜欢。
相关推荐
-
C++ 十进制转换为二进制的实例代码
题目内容:将十进制整数转换成二进制数. 输入描述:输入数据中含有不多于50个的整数n(-231<n<231). 输出描述:对于每个n,以11位的宽度右对齐输入n值,然后输出"-->",再然后输出二进制数.每个整数n的输出,独立占一行. 题目分析:将某个数从十进制转为二进制的具体方法是,该数对2取余,结果要么为1要么为0,此为该数对应二进制的末位:然后该数除以二,得到的商再次对2取余,结果为对应二进制的倒数第二位--以此类推,知道除以2的结果为0. 参考代码: 复制代码
-
进制转换基础
基本知识 十进制 基数为10,逢10进1.在十进制中,一共使用10个不同的数字符号,这些符号处于不同位置时,其权值各不相同. 二进制 基数为2,逢2进1.在二进制中,使用0和1两种符号. 八进制 基数为8,逢8进1.八进制使用8种不同的符号,它们与二进制的转换关系为: 0:000 1:001 2:010 3:011 4:100 5:101 6:110 7:111 十六进制 基数为16,逢16进1.十六进制使用16种不同的符号,它们与二进制的转换关系为: 0:0000 1:0001 2:0010
-
进制转换算法原理(二进制 八进制 十进制 十六进制)
1.二进制数.八进制数.十六进制数转十进制数 有一个公式:二进制数.八进制数.十六进制数的各位数字分别乖以各自的基数的(N-1)次方,其和相加之和便是相应的十进制数.个位,N=1;十位,N=2...举例: 110B=1*2的2次方+1*2的1次方+0*2的0次方=0+4+2+0=6D 110Q=1*8的2次方+1*8的1次方+0*8的0次方=64+8+0=72D 110H=1*16的2次方+1*16的1次方+0*16的0次方=256+16+0=272D 2.十进制数转二进制数.八进制数.十六进制
-
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
一,十进制(decimal system)转换函数说明 1,十进制转二进制 decbin() 函数,如下实例 echo decbin(12); //输出 1100 echo decbin(26); //输出 11010 decbin (PHP 3, PHP 4, PHP 5) decbin -- 十进制转换为二进制 说明 string decbin ( int number ) 返回一字符串,包含有给定 number 参数的二进制表示.所能转换的最大数值为十进制的 4294967295,其结果为
-
c++实现十进制转换成16进制示例
c++实现十进制转换成16进制 复制代码 代码如下: //Decimal to hexadecimal number//programming by : Erfan Nasoori//Date of send : 2009/1/11 #include <iostream.h> void main(){ int x,y,i; int d,n=1; int * r; char h[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D
-
PHP中实现中文字符进制转换原理分析
一,中文字符转十进制原理分析 GBK编码中一个汉字由二个字符组成,获取汉字字符串的方法如下 复制代码 代码如下: $string = "不要迷恋哥"; $length = strlen($string); for($i=0;$i<$length;$i++){ if(ord($string[$i])>127){ $result[] = ord($string[$i]).' '.ord($string[++$i]); } } var_dump($result); 由于一个汉字为
-
C 语言进制之间的转换
二进制.八进制和十六进制向十进制转换都是非常容易的,就是"按权相加". 所谓"权",也即"位权".例如,十进制第1位的位权为100=1,第2位的位权为101=10,第3位的位权为102=100:而二进制第1位的位权为20=1,第2位的位权为21=2,第3位的位权为22=4.设数字所采用的进制为N(基数也是N),那么第 i 位的位权为 N(i-1). 不同进制转换为十进制举例: 二进制:1001 = 1×23 + 0×22+ 0×21 + 1×20
-
php图片的二进制转换实现方法
本文实例讲述了php图片的二进制转换实现方法.分享给大家供大家参考.具体实现方法如下: 这里我们是在上传文件时把上传的文件转换成二进制然后保存到数据的字段中去,下次读读出我们也用同样的方法显示即可. html代码如下: 复制代码 代码如下: <form action="insertPic.php" method="post" enctype="multipart/form-data" name="mainForm" id
-
Java 进制转换的方法
复制代码 代码如下: //二转十Integer.toBinaryString(int i);//八转十Integer.toOctalString(int i);//十六转十Integer.toHexString(int i); 10//二转十11Integer.valueOf("1010",2).toString();12//八转十13Integer.valueOf("8765",8).toString();14//十六转十15Integer.valueOf(&qu
-
编写C语言程序进行进制转换的问题实例
题目 题目描述: 将M进制的数X转换为N进制的数输出. 输入: 输入的第一行包括两个整数:M和N(2<=M,N<=36). 下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出. 输出: 输出X的N进制表示的数. 样例输入: 16 10 F 样例输出: 15 提示: 输入时字母部分为大写,输出时为小写,并且有大数据. 思路 大整数乘法
随机推荐
- js 验证密码强弱的小例子
- ES6下React组件的写法示例代码
- Go语言的队列和堆栈实现方法
- vue2组件之select2调用的示例代码
- java自定义实现base64编码转换
- .Net读取Excel 返回DataTable实例代码
- yii2控制器Controller Ajax操作示例
- Android控件系列之XML静态资源使用介绍
- php常用ODBC函数集(详细)
- JavaScript获取页面中超链接数量的方法
- 数据库修改多对多的中间表的记录的技巧
- MSSQL数据库占用内存过大造成服务器死机问题的解决方法
- asp数组使用(2)
- 给网站上的广告“加速”显示的方法
- 我教你学之系统性能优化注册表修改实例(2)
- Java实现字符串解析为日期时间的方法示例
- SSM项目中配置LOG4J日志的方法
- php记录日志的实现代码
- php fckeditor 调用的函数
- 安全技术不是万能药 人也是重要一环