C++ 移位运算与进制转换 浅析
来源:互联网 发布:单桂敏艾条淘宝店铺 编辑:程序博客网 时间:2024/06/04 19:06
移位运算包含“逻辑移位”(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; }
0 0
- C++ 移位运算与进制转换 浅析
- JAVA移位运算与进制转换
- 利用移位运算实现进制转换
- 《c陷阱与缺陷》笔记--移位运算
- C中的移位运算
- C中的移位运算
- C/C++移位运算
- 十进制转换二进制通过与运算和移位
- 移位运算符<<与>>
- C移位转换
- LeetCode 405. Convert a Number to Hexadecimal (进制转换,移位运算)
- c中的移位运算符
- C语音移位运算符
- C语言的移位运算
- C语言移位运算符
- C语言移位运算符
- C语言移位运算符
- C语言移位运算符
- libsvm3.11+3.20安装
- 【SPOJ TSUM】Triple Sums(FFT+容斥定理)
- 【华为oj】矩阵乘法
- neo4j介绍
- UML类图
- C++ 移位运算与进制转换 浅析
- CC2530定时器T1产生PWM
- LintCode-编辑距离
- 最长上升子序列
- 2
- 我和opencv 8 最大类间方差法
- 《克里希那那穆提-人生中不可不想的事》读书笔记
- 华为机试—求数的平方根立方根
- Mongodb启动命令mongod参数说明