[C/C++入门][进制原理]27、计算机种的进制

各种信息进入计算机,都要转换成“0”“1”的二进制形式。

计算机 采用二进制的原因是:
  1. 物理上容易实现,可靠性高。(电子元件的通电和不通电就可以表示1和0,所以非常方便)
  2. 运算简单,通用性强。
  3. 便于表示和进行逻辑运算。

进位计数制的特点:

采用进位的方式进行计数;

使用位置表示法
例如:
123.45=1\times 10^{2} +2\times10^{1}+3\times10^{0}+4\times10^{-1}+5\times10^{-2}

         

2-1 计算机中常用的数字系统 进制
二进制
十进制
八进制
进制        二进制  十进制 八进制 十六进制
进位规则 逢二进一 逢十进一 逢八进一 逢十六进一
基数 2 10 8 16
基本符号 0,1 0,1,2, …,9 0,1,2, …,7 0,1,2, …,9,A,B,C,D,E,F

十进制转换成二进制123.45转1111011.011100

计算机种如何表示呢? 

在C++中,你可以使用

进制表示

  1. 二进制 (0b0B 前缀): 从C++11开始,你可以使用前缀0b0B来表示二进制数。

    int num = 0b1011; // 等同于十进制中的11
  2. 八进制 (0 前缀): 八进制数可以通过在数字前添加0来表示。

    int num = 011; // 等同于十进制中的9

      3.十进制: 没有特殊前缀,默认就是十进制。

int num = 11; // 直接写数字

      4.十六进制 (0x0X 前缀): 十六进制数通过前缀0x0X来表示。 

int num = 0xB; // 等同于十进制中的11

 

输出进制转换

你可以使用std::cout结合std::dec, std::hex, std::octstd::bitset来输出不同进制的数字。

  1. 十进制 (std::dec):

    std::cout << std::dec << num; // 输出十进制形式
  2. 十六进制 (std::hex):

    std::cout << std::hex << num; // 输出十六进制形式
  3. 八进制 (std::oct):

    std::cout << std::oct << num; // 输出八进制形式
  4. 二进制 (std::bitset): std::bitset可以用来输出二进制字符串。

    std::bitset<32> bits(num);
    std::cout << bits << '\n'; // 输出二进制形式

输入进制转换

使用std::cin读取数字时,你可以指定进制,例如:

int num;
std::cin >> std::hex >> num; // 假设用户输入十六进制数字

各个进制:

#include <iostream>
#include <bitset>

int main() {
    int num = 27;

    std::cout << "Decimal: " << num << '\n';
    std::cout << "Binary:   " << std::bitset<32>(num) << '\n';
    std::cout << "Octal:    " << std::oct << num << '\n';
    std::cout << "Hexadecimal: " << std::hex << num << '\n';

    return 0;
}

其它的转化公式和原理

1. 从十进制转换为其他进制

转换公式:

假设我们要将一个十进制数d转换为r进制:

  • 将d除以r,得到商q和余数ri​。
  • 将商q再次除以r,直到商为0,每次都记录下余数。
  • 最终的r进制数是由余数从最后一个(即最先产生的余数)到第一个(即最后产生的余数)逆序排列组成的。

 

示例:

将十进制数13转换为二进制:

  1. 13/2=6 余数1
  2. 6/2=3 余数0
  3. 3/2=1 余数1
  4. 1/2=0 余数1

最终的二进制数是1101。

从其他进制转换为十进制

转换公式:

示例:

将二进制数1101转换为十进制:

3. 从非十进制直接转换为非十进制

转换公式:

先将非十进制数转换为十进制,然后再将十进制数转换为所需的非十进制。

示例:

将八进制数52转换为十六进制:

总结:

  1. 任意进制到十进制:使用上述的公式,将每个位的值乘以基数的幂次,然后求和。
  2. 十进制到任意进制:使用除法取余数的方法,将商重复进行除法直到为0,然后倒序排列余数。

这些原理和公式适用于任何进制的转换,只要知道基数和位数权重,就可以进行有效的转换

相关推荐

  1. Python转换

    2024-07-19 07:08:02       50 阅读
  2. (二).数值&转换

    2024-07-19 07:08:02       33 阅读
  3. 平衡三分布式计算

    2024-07-19 07:08:02       25 阅读
  4. 数相关

    2024-07-19 07:08:02       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 07:08:02       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 07:08:02       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 07:08:02       57 阅读
  4. Python语言-面向对象

    2024-07-19 07:08:02       68 阅读

热门阅读

  1. PWM控制技术在电机驱动中的应用(内附资料)

    2024-07-19 07:08:02       21 阅读
  2. Eclipse 内容辅助

    2024-07-19 07:08:02       20 阅读
  3. 01 MySQL

    01 MySQL

    2024-07-19 07:08:02      19 阅读
  4. ZPL Viewer工具网站

    2024-07-19 07:08:02       22 阅读
  5. Selenium - 设置元素等待及加载策略

    2024-07-19 07:08:02       16 阅读
  6. RabbitMq

    RabbitMq

    2024-07-19 07:08:02      16 阅读
  7. vite + vue3 + uniapp 项目从零搭建

    2024-07-19 07:08:02       22 阅读
  8. React中Hooks几个有用的 ref

    2024-07-19 07:08:02       19 阅读
  9. Android RecyclerView实现Item单条滑动,一屏滑动

    2024-07-19 07:08:02       17 阅读
  10. crc、ecc、 uboot和 boot的原理分析及详解

    2024-07-19 07:08:02       22 阅读
  11. React Hook 总结(React 萌新升级打怪中...)

    2024-07-19 07:08:02       21 阅读
  12. linux路由基础知识(一)

    2024-07-19 07:08:02       16 阅读