7. 进制转化的原理

用0开头的表示该整数是八进制表现形式,如:0254;用0x开头的表示该整数是十六进制表现形式,如:0xAC;

对于八进制数0254,要转换成十进制数,就是以各个位上的数值乘以基数8的(n-1)次方,即

 0254=4*8^0 + 5*8^1 + 2*8^2=4+40+128=172

所以八进制数0254的十进制表现形式是172。

同理,二进数和十六进数要转化为十进数,都是以各个位置上的数值乘以该进制数基数的(n-1)次方后,相加得到和,即为该进制数的十进制表现形式。

若是要由十进制转化为二进制,则是用十进制数除以2(即该进制的基数),依次取余,直到最后不能整除该基数为之,从最后一个余数依序往前,得到的就是该进制数的二进制表现形式。

整个思路可以参考下图:
 而二进制数如何快速转化为八进制/十六进制呢?

若二进制数要转化为八进制,就是将二进制数从尾往前数,3个位为1组,最后不足3个位的在前面加0补足。然后每组转化为十进制形式后依序组合,就能得到该二进制数的八进制表现形式。

同理二进制要转化为十六进制,就是将二进制数从尾往前数,4个位为1组,最后不足4个位的在前面加0补足。然后每组转化为十进制形式后依序组合,就能得到该二进制数的十六进制表现形式。
负数的二进制其实就是该负数的正数的二进制形式取反之后,与二进制数1(0001)相加得到的二进制形式。如下图:

负数的二进制形式的最高位是1.

时间: 2024-10-22 02:14:45

7. 进制转化的原理的相关文章

Java Integer 进制转化的实现(附源码),对模与补码的理解

1.toBinaryString方法的实现 1 public static String toBinaryString(int i) { 2 return toUnsignedString0(i, 1); 3 } 4 private static String toUnsignedString0(int val, int shift) { 5 // assert shift > 0 && shift <=5 : "Illegal shift value";

计算机基础知识_进制转化

进制转化 一.任何一个进制转化为10进制的方式 156的十进制可以看做1*10^2 + 5*10^1  +   6*10^0 首先我们看一下156 ,平方,次方等等都是根据后面有多少位决定的,如果用计算机计算,则正好是156 33是一个八进制可以看做3*8^1+3*8^0 次方  换算出来就是10进制 如果你本身是x进制,那么你的数字就看做  num * x^位数  比如我有一个16进制的数字,转为10进制 16进制在计算机中表示方法: 1 2 3 4 5 6 7 8 9 a b c d e f

c语言进制转化

#include <stdio.h> // 进制转化 int main(void) { int i1 = 12; int i2 = 88; int i3 = 0x32C; printf("八进制输出i1 = %o\n", i1); // 14 printf("十六进制输出i2 = %x\n", i2); // 58 printf("十六进制输出i3 = %x\n", i3); // 32c printf("十进制输出i3 =

IP进制站群原理

百度搜索:“inurl:0×00”,会发现全是以八进制.十六进制形式显示的域名(如下图),当点击后,浏览器会自动将这些域名转换为十进制的ip.这种方式在黑帽圈目前挺火爆的,用于做长尾词排名,可以带来可观的流量. IP进制原理:IP地址最常写成加点十进制形式,此种IP通常有4组数字段,并以”.”分隔开,每段数字都在0 到255之间.因为IP同样可以被转换成八进制和十六进制! 域名到IP的转换通常是通过网络软件在后台运行的,用户是不可见的!给出一个域名,你的浏览器就向仪态服务器查询:对于八进制或十六

栈的应用之进制转化

顺序栈的代码: 不再赘述:点击打开链接 //栈的应用-----进制转化 #include"stack.h" int main() { Stack st; InitStack(&st); int select; int num1; //要转化的数 int num2; //转化之后各个位的数 int flag = 1; //控制循环结束 while(flag) { cout<<"****************进制转换*****************&quo

python数据结构:进制转化探索

*********************************第一部分******************************************************************* *********************************************************************************************************************** # 输入excel的行号,输出对应列的序号(从0开

标识符,进制转化,原反补码等

标识符 Java对包.类.方法.参数.变量等要素命名时使用的字符序列. 规则:***** 1.由字母(含中.英.日.俄等).数字.下划线_和美元符号$组成. 2.不能以数字开头   int 123a=1; 3.区分大小写  int a=1和int A=1是不一样的. 4.长度无限制.(一般编程长度不超过15个字符) 5.不能是Java中的保留字和关键字    int class="1"    int ainta=1 保留字和关键字都有哪些?我们知道以后应该避开它们. 标识符命名习惯:*

实现进制转化伪代码

原理和操作思路 输入一个十进制的数字,将其转化为其他进制 就是将这个数字除进制数得到余数1,不断迭代直到余数n<进制数,于是转化后的数字就是将余数从n-->1排序 操作中出现的问题 无法进行的操作,将一个个余数进行排序 上面的操作没办法用代码俩表现出来 目前已经解决了问题(2,8进制可以适用) https://zhidao.baidu.com/question/589205154461620525.html 现在出现了新的问题,就是如果转化成16进制,没有办法将大于9的数字替换成对应的字符 原

实现10进制转化成其它进制

<?php/** * Created by PhpStorm. * User: lenovo * Date: 2016/4/1 * Time: 17:10 */ header('content-type:text/html;charset=utf-8'); // 获取被转化数字及转化进制 $num = isset($_POST['num'])?$_POST['num']:''; $connect = isset($_POST['connect'])?$_POST['connect']:''; /