移位运算包括“逻辑移位”(logical shift)和“算术移位”(arithmetic shift)。

逻辑移位:移出去的位丢弃,空缺位(vacant bit)用 0 填充。

算术移位:移出去的位丢弃,空缺位(vacant bit)用“符号位”来填充,所以一般用在右移运算中。

c++中,整数分有符号数和无符号数两种。对于这两种数做左移、右移运算。稍有差别:

1、假设是无符号数,无论是左移还是右移都是“逻辑移位” 。例,对无符号数 179 做左移、右移操作的结果,都是补0操作;

2、假设是有符号数。左移运算,那么做的是“逻辑移位”,与无符号数的左移同。假设是做右移运算,那么做的是“算术移位”。

最后本文给出十进制数转换为二进制的递归工作机制图例。例如以下

10进制数转换成二进制数,这是一个连续除2的过程:

把要转换的数,除以2,得到商和余数。

将商继续除以2,直到商为0。最后将全部余数倒序排列,得到数就是转换结果。



十进制转十六进制源代码

#include<iostream>
#include<string>
using namespace std;
string str_16=""; string switch_10_16(int ch)
{
switch(ch)
{
case 0:return"0";break;
case 1:return"1";break;
case 2:return"2";break;
case 3:return"3";break;
case 4:return"4";break;
case 5:return"5";break;
case 6:return"6";break;
case 7:return"7";break;
case 8:return"8";break;
case 9:return"9";break;
case 10:return"A";break;
case 11:return"B";break;
case 12:return"C";break;
case 13:return"D";break;
case 14:return"E";break;
case 15:return"F";break;
}
}
long int change(long int num)
{
if(num<16)
{
str_16+=switch_10_16(num);
return 0;
}
else
{
change(num/16);
str_16+=switch_10_16(num%16);
}
} int main()
{
long str_10;
cin>>str_10;
change(str_10);
cout<<str_16<<endl;
return 0;
}

C++ 移位运算与进制转换 浅析的更多相关文章

  1. JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算

    JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...

  2. import导入模块,==和is,浅拷贝和深拷贝,进制转换,位运算,私有化,property装饰器

    '''import导入模块'''import sysprint(sys.path) sys.path.append('D://ASoft/Python/PycharmProjects')import ...

  3. C#的格式化(进制转换|位运算)

    1.首先做一下知识的普及C或c Currency 货币格式D或d Decimal 十进制格式E或e Exponent 指数格式F或f Fixed point (float)固定精度格式G或g Gene ...

  4. Python 进制转换、位运算

    一.进制转换 编程用十进制,十进制转换为二进制.八进制.十六进制 In [135]: bin(23) Out[135]: '0b10111' In [136]: oct(23) Out[136]: ' ...

  5. 【JavaScript】进制转换&位运算,了解一下?

    前言 在一般的代码中很少会接触到进制和位运算,但这不代表我们可以不去学习它.作为一位编程人员,这些都是基础知识.如果你没有学过这方面的知识,也不要慌,接下来的知识并不会很难.本文你将会学习到: 进制转 ...

  6. Java 进制转换(二进制(负),八进制,十进制,十六进制),位运算、逻辑运算(2)

    负数的二进制表现形式:其实就是该数的绝对值取反+1. 进制转换(二进制,八进制,十进制,十六进制),原理解析 十六进制的表现形式: (2)(与.异或.左移.右移.三元运算符)

  7. java se系列(二) 关键字、注释、常量、进制转换、变量、数据类型转换、运算符

    1 关键字 1.1 关键字的概述 Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名.方法名.类名.包名. 1.2 常见的关键字 备注 ...

  8. Go 获取键盘输入,进制转换

    #### Go 获取键盘输入,进制转换 最近爱上<<珂矣的心灵独语>> 连续听一下礼拜也不觉得厌: 喜欢她的宁静与安然,喜欢她的坦荡与欢喜,喜欢她的禅意与智慧; ***撑着一苇 ...

  9. SQL Server 进制转换函数

    一.背景 前段时间群里的朋友问了一个问题:“在查询时增加一个递增序列,如:0x00000001,即每一个都是36进位(0—9,A--Z),0x0000000Z后面将是0x00000010,生成一个像下 ...

随机推荐

  1. [转][IPC通信]基于管道的popen和pclose函数

    标准I/O函数库提供了popen函数,它启动另外一个进程去执行一个shell命令行. 这里我们称调用popen的进程为父进程,由popen启动的进程称为子进程. popen函数还创建一个管道用于父子进 ...

  2. Android Studio查看CPU使用率。

    进入AS自带的CMD,依次输入: (1)进入Android Atudio安卓的目录: 1.H: 2.cd AndroidStudio\sdk\platform-tools (2)adb shell ( ...

  3. vim之tags

    好长时间没有上来更新了, 今天趁老板不再上来休闲一下. 本章要说的是和vim的tags相关的内容. 之所以在跳转之后就说明tags是因为这个功能相当的重要和实用. 好的东西自然是需要提前分享的. 首先 ...

  4. NFS指定端口,NFS缓存(转载)

    nfs服务端: #编辑/etc/nfsmount.conf,在末尾添加: #RQUOTAD_PORT=30001#LOCKD_TCPPORT=30002#LOCKD_UDPPORT=30002#MOU ...

  5. 最适合初学者的Linux运维学习教程2018版

    Linux运维工程师是一个新颖岗位,现在非常吃香,目前从行业的角度分析,随着国内软件行业不断发展壮大,越来越多复杂系统应运而生,为了保证系统稳定运行,必须要有足够多的Linux运维工程师.维护是软件生 ...

  6. Python----DFS---骑士周游问题

    这篇文章将会将一个数据结构与算法中一个很经典很重要的概念——深度优先搜索(Depth-First-Search:DFS).........(你他喵不是在标题里说了吗?) 好吧,DFS的精髓我其实也还没 ...

  7. Configuring SSL on Enterprise Manager and the SLB (Release 12.1.0.2 and later)

    From: http://docs.oracle.com/html/E24089_42/ha_setup.htm#sthref833 If the SLB is configured to use T ...

  8. 使用python的几个小经验(查看文档)

    好久没有水博客了,未来再过20天不到的时间又得参加软考,今天终于得好好水一发帖子 关于Python,很多人包括我之前都不知道怎么找文档,现在有一个好办法,就是在命令行模式下调用pydoc –p xxx ...

  9. Linux判断

    #字符串比较if [ "$1" == "判断条件" ] then echo "$1" elif [ "$1" == &q ...

  10. 基础命令history

    history   记录历史命令 环境变量: HISTSIZE: 命令历史记录的条数: HISTFILE:  命令历史记录的文件,~/.bash_history: HISTFILESIZE: 命令历史 ...