关于C++读入数字按位取出与进制转换问题

这一片博客我就不写具体的一个题了,只是总结一种典型问题——读入数字按位取出。

就拿数字12345举例吧。

是首先,我们要取出个位。这样取出:

12345/1=12345

12345%10=5.     //为了好发现规律

这样我们就有了它的个位。十位是这样:

12345/10=1234

1234%10=4.

同理,百位:

12345/100=123

123%10=3.

于是可以发现,取出哪一位,就是要先将原数除以这一位的位名,再模10.

程序:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int a[100];
    int wei = 0;
    int num;
    cin >> num;
    while ((num / (int)pow(10, wei)) != 0)        //循环终止条件是这个数的位数小于这一次要除以的数的位数
    {
        a[wei] =(num/(int)pow(10,wei))%10;        //根据刚才得出的结论,取出各位,存到数组中。
        wei++;
    }
}

然后是进制转换问题。其实和取位问题差不多,只不过取出之后要乘上这一位对应的进制的次方数。

程序:

 1 long long to10(int jz,int num)//功能:将输入的数转换成十进制
 2 {
 3     long long result=0;
 4     int wei=0;
 5     while(num/(int)pow(10,wei)!=0)//将输入的数按位取出
 6     {
 7         result+=pow(jz,wei)*((int)(num/pow(10,wei))%10);//按数所在的位置乘上对应的进制的次方
 8         wei++;
 9 //        (num/1)%10
10 //        (num/10)%10
11 //        (num/100)%10
12     }
13     return result;
14  } 

原文地址:https://www.cnblogs.com/arknight/p/12235458.html

时间: 2024-11-01 14:24:16

关于C++读入数字按位取出与进制转换问题的相关文章

2~62位任意进制转换(c++)

进制转换的符号表为[0-9a-zA-Z],共61个字符,最大可表示62进制. 思路是原进制先转换为10进制,再转换到目标进制. 疑问: 对于负数,有小伙伴说可以直接将符号丢弃,按照整数进行进位转换,最后再将负号补回来,我认为这种做法是不对的. 正确的做法是:考虑好按照16位(short)还是32位(int)抑或64位(long long),先求出二进制补码(这时候就正负数就统一了),将二进制数转换为十进制后在转换为其他进制(如果有小伙伴知道如何直接将二进制转换为任意进制的方法可以留言告诉我,不胜

进制转换与数字存储实例

说明:本实例基于C语言编写 一.进制转换 1).十进制转其它进制 DEC转BIN:N=25 (25)2=11001 DEC转OCT:N=125 (125)8=175 DEC转HEX:N=2581 (2581)16=A15 2).其它进制转十进制 BIN转DEC:(1100101)2 (1100101)2=1x26+1x25+0x24+0x23+1x22+0x21+1x20=64+32+0+0+4+0+1=101 OCT转DEC:(2612)8 (2612)8=2x83+6x82+1x81+2x8

(数字类型,进制转换,字符串,列表)介绍和操作

数字类型 整型 用途:记录年龄.等级.号码等 定义方式如 age = 18 本质 # age = int(18) 整型只能存一个值而且是不可变类型 int()方法能将字符串转为整型 需要注意的是使用int只能转纯数字的字符串,有小数点也不行 浮点型 用途:记录身高.体重.薪资等 定义方式如 height= 185.1 本质 # height= float(185.1) 浮点型只能存一个值而且是不可变类型 float()方法能将字符串和整型转为浮点型 需要注意的是使用float方法只能转纯数字的字

Arduino 数码管LED驱动 读位法 16进制

区别与上两个驱动的方法,用bitRead()读取位数,代码简介一点. //设置阴极接口 int d1 = 1; int d2 = 2; int d3 = 3; int d4 = 4; int d5 = 5; int d6 = 6; int d7 = 7; //设置阳极接口 int a = 8; int b = 9; int c = 10; int d = 11; int e = 12; int f = 13; int g = A0; int h = A1; const unsigned char

随机生成16位的16进制数

利用Python的uuid模块生成16位的16进制数 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import uuid for i in range(100): res = str(uuid.uuid4()) res = res.replace('-', '') print(res[:16]) 随机生成100个16位的16进制数: e77ddca3bb474c9d fb96d68a32754500 2c5dc4347fcd43c0 b51bff

Python 进制转换、位运算

一.进制转换 编程用十进制,十进制转换为二进制.八进制.十六进制 In [135]: bin(23) Out[135]: '0b10111' In [136]: oct(23) Out[136]: '0o27' In [137]: hex(23) Out[137]: '0x17' 也可以直接反向获取十进制 In [146]: 0b10111 Out[146]: 23 In [147]: 0o27 Out[147]: 23 In [148]: 0x17 Out[148]: 23 也可以用int函数

Python中数字之间的进制转换

https://www.cnblogs.com/Kingfan1993/p/9795541.html 在python中可以通过内置方法进行相应的进制转换,但需记得转化成非十进制时,都会将数字转化成字符串 转化成二进制 a = 10 #声明数字,默认十进制 b = bin(a) print(b , type(b)) 运行结果: 转化成八进制 a = 10 #声明数字,默认十进制 b = oct(a) print(b , type(b)) 运行结果: 转化成16进制 a = 10 #声明数字,默认十

字和字节和位和16进制数的关系

字 word 字节 byte 位 bit 字长是指字的长度 1字=2字节(1 word = 2 byte) 1字节=8位(1 byte = 8bit)  一个字的字长为16 一个字节的字长是8 两个16进制数! 一个字节八个比特,就是八个二进制位   0000 0000     0x00-0xFF (十进制0-255) 四个二进制数最大表示为15,就是一个16进制数,所以八位可以表示成两个16进制的数!

Android 8位的16进制数字表示的颜色的含义

数值以#符号开头. 前2位数字代表颜色的透明度, 00~ff,  00表示该颜色完全透明, ff表示该颜色完全不透明.  后6位数字代表颜色的RGB值. 如: 000000代表黑色, ffffff代表白色, ff0000代表红色, 00ff00代表绿色, 0000ff代表蓝色, ffff00代表黄色等. 下面以侧滑菜单的背景颜色(此处设置为黄色)为例, 对透明度进行说明. 1. 设置黄色的透明度为ff(表示该颜色完全不透明): 效果图如下: 2. 设置黄色的透明度为00 (表示该颜色完全透明):