二,八,十,十六进制超简单详解

1、进制的由来

  • 进制越大表达形式越简洁

2、进制的特征

  • 二进制:由 0 ,1 组成。由 0b开头。 8bit就是计算机底层二进制的形式
  • 八进制:由 0 ,1…7 组成 。以 0 开头。
  • 十进制:由0 ,1…9组成。整数默认十进制。
  • 十六进制:由0,1…9,a,b,c,d,e,f(大小写均可)组成,由0x开头 这里的a代表10,b代表11,c代表12。

3、其他进制转换为十进制

(***只针对于其他进制转换为十进制***)
举例:整数 12345  括号(n*n)括起来的表示 n的n次方
     x  :表示数学中的乘号。
(十进制倒十进制 从中你可以看出什么👇)
12345 = 1x(10*4)+2x(10*3)+3x(10*2)+4x(10*1)+5x(10*0)
12345 = 10000+2000+300+40+5 
12345 = 12345
仔细查看算式得出。
1.系数 ↓
(每一位上的数值就代表系数 例如 1,2,3,4各自都代表系数。)
2.基数 ↓
(要进行x进制换算 的基数就是x,8进制的系数就是 8)
3.权 ↓ :重点
(针对每一个位子上的数据进行编号  *从左边依次是 4,3,2,1,0* )
-:每一个位子上的 系数x(基数*权次幂)相加 就得出想要的进制数据。

4、实例

1.二进制100 转换十进制:
1x(2*2) + 0x(2*1) + 0x(2*0)
=4+0+0
=4
-----------------------------------------
2.八进制100 转换十进制:
1x(8*2) + 0x(8*1) + 0x(8*0)
=64+0+0
=64
------------------------------------------
3.十六进制100 转换为十进制:
1x(16*2) + 0x(16*1) + 0x(16*0)
=256+0+0
=256
4.练习题01:0b开头一看就是二进制
0b10101
=1x2*4  +  1x2*2  +  1x2*0
=16+4+1
=21
5.联系题02:0开头一看就是八进制
0123
=1x8*2  +  2x8*1  +  3x8*0
=64+16+3
=83
6.练习题03:0x开头一看就是十六进制
0x3c
=3x16*1  +  cx16*0
=48+12
=60

5、十进制到任意进制

在这里插入图片描述

  • 1.技巧 :除基取余数 直到商位0 余数反转
    举例整数十进制 20 转换为 八进制
    20/8
    =2…4
    =0…2
    =24
    再由八进制的24转换为十进制
    = 2x8 *1 + 4x8 *0
    = 20
  • 2.由此得出结论:
    1.如果要(转换的进制 )比(原来的进制大)那么转换后的结果越小。
    2.相反则:如果要(转换的进制 )比(原来的进制小)那么转换后的结果越小。

7、十进制与二进制之间的转换

  • 1.因为i计算机底层。存的是二进制数据 而我们平时用的整数就是十进制的数据所以这两者之间要熟练
  • 2.0 所以推出快速转换方式 8421码

84221码是虫国大陆的叫法,8421 码是BCD代码中最常用的一种。 在这种编码方式中每一位二进制代码的值1都是代表一个固定数值, 把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码
在这里插入图片描述
如图所示 每个二进制在十进制都有一个整数来表示
1.举例: 二进制的 0b11100011

11100011
 =128+64+32+2+1
 =227
十进制的227就是.二进制的0b11100011
转换为十进制 : 从右边看 如果是1就代表包含8421码里的值如果是0就不包含最后把值 相加 就得出十进制数据。

2.注意二进制中的 0在左边可以省略在中间或右边不能省略
3.十进制转换为二进制:也特别简单
~~

举例:十进制 520转换为2进制
如果十进制的数 大于二进制的128太多那么可以除于128.
(520/128)=4....8
那就可以得出二进制数据为
十进制 11111000
证明:十进制转二进制
128+64+32+16+8=520

重要结论:转换为二进制 主要十进制看包含不包含 8421码里面的值包含哪一位就是 1不包含就是0 如果包含还比8421码里的值大,那就减去8421码里的值继续往下比如果比下一个值小就是0 (大就是1如果大的话就在减在比) 直到出结果

  • 超级问题 任意的x进制到任意的y进制 会转换吗?
  • 答案1:把任意的 x 进制转换为十进制 。再由十进制转换为任意的 y 进制就可以了。
  • 答案2:举例 二次方 0b1110010转换为八次方
1110010
从右边三个一组  001  110  010  不够补0
先把三个分别转换为十进制 
1+6+2
=162
八进制的就是 162
转换16进制自己琢磨把。。看第一张图
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
栈是一种后进先出(Last In First Out,LIFO)的数据结构,可以用来实现很多算法,其中一个就是栈的应用:进制转进制。 进制转进制的原理是将一个进制数不断除以,直到商为0,然后将每次的余数倒序排列起来即可得到进制数。我们可以使用栈来实现这个过程。 具体的算法步骤如下: 1. 初始化一个栈,用来存放余数。 2. 对于给定的进制数n,不断进行以下操作,直到商为0: 1) 将n除以8,将余数压入栈中。 2) 将n更新为商。 3. 从栈中依次弹出余数,得到的结果即为进制数。 下面是使用C语言实现这个算法的代码示例: ```c #include <stdio.h> #define MAX_SIZE 100 int stack[MAX_SIZE]; int top = -1; void push(int x) { if (top == MAX_SIZE - 1) { printf("Stack overflow\n"); return; } stack[++top] = x; } int pop() { if (top == -1) { printf("Stack underflow\n"); return -1; } return stack[top--]; } void decimal_to_octal(int n) { while (n > 0) { push(n % 8); n /= 8; } while (top != -1) { printf("%d", pop()); } } int main() { int n; printf("Enter a decimal number: "); scanf("%d", &n); printf("Octal equivalent: "); decimal_to_octal(n); printf("\n"); return 0; } ``` 在这个程序中,我们使用了一个数组来实现栈的功能,其中`push`函数用来将元素压入栈中,`pop`函数用来从栈中弹出元素。在`decimal_to_octal`函数中,我们使用了栈来存储余数,然后在弹出的过程中得到进制数。最后,在`main`函数中我们获取用户输入的进制数并输出转换后的进制数。 希望这个算法的详解对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值