博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 移位运算与进制转换 浅析
阅读量:4610 次
发布时间:2019-06-09

本文共 1406 字,大约阅读时间需要 4 分钟。

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

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

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

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

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

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

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

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

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

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

十进制转十六进制源代码

#include
#include
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<
<

转载于:https://www.cnblogs.com/wzjhoutai/p/7106957.html

你可能感兴趣的文章
学习wavenet_vocoder之环境配置
查看>>
常用Maven命令
查看>>
Docker启动mysql的坑2
查看>>
j2ee爬坑行之二 servlet
查看>>
JAVA基础入门(JDK、eclipse下载安装)
查看>>
最基础的applet运用--在applet上画线
查看>>
布局大全
查看>>
eclipse中安装tomcat插件
查看>>
常见设计模式C++代码实现
查看>>
C++线程同步的四种方式(Windows)
查看>>
前端面试集锦(1)
查看>>
What are Upgrade, Product and Package Codes used for? By pusu
查看>>
【转】梯度下降算法以及其Python实现
查看>>
H5的本地存储
查看>>
1035 Password (20 分)
查看>>
VC静态连接库注意事项
查看>>
并不对劲的hdu4777
查看>>
如何在个人博客首页中添加访问计数器
查看>>
Morning Reading Collection
查看>>
Sudo
查看>>