标题:整数进制转换(十六进制,十进制,二进制)--表格法

在计算机里,最基本的存储单位为字节(Byte,常说的大B),1个字节包含8位(bit,常说的小b)。计算机的数据就是一个字节一个字节的形式存储在内存中。

内存的大小单位有KB,MB,GB,TB等,它们之间的关系是:

1KB = 1024B

1MB = 1024*1024B

1GB = 1024*1024*1024B

1TB = 1024*1024*1024*1024B

计算机存储单位一般用B,KB,MB,GB,TB,PB,EB,ZB,YB,BB来表示。

1KB

(Kilobyte千字节)=1024B

1MB

(Megabyte兆字节简称“兆”)=1024KB

1GB

(Gigabyte吉字节又称“千兆”)=1024MB

1TB

(Trillionbyte万亿字节太字节)=1024GB,其中1024=2^10

( 2的10次方)

1PB(Petabyte千万亿字节拍字节)=1024TB

1EB(Exabyte百亿亿字节艾字节)=1024PB

1ZB

(Zettabyte十万亿亿字节泽字节)=

1024 EB

1YB

(Yottabyte一亿亿亿字节尧字节)=

1024 ZB

1BB

(Brontobyte一千亿亿亿字节)=

1024 YB

大家知道,整数包括负数,零,和正数。计算机中的整数分为有符号数和无符号数。有符号数的最高位表示符号:即最高位为0,表示正数,最高位为1,表示负数。无符号数表示非负数,整个位数都用来表示整数的值。比如,有下面2个有符号数:

10000110,由于最高位为1,所以是负数;00000110,由于最高位为0,所以为正数。然而,假设把上面2个数当作无符号数的话,那么就都是正数了。

计算机中的数,是以二进制存在于内存中的。关于数的表示,一般有二进制,十六进制,八进制,十进制这几种表示方法。

在C语言里,十六进制的表示方法是0x或者0X开头。而十六进制里的位数包括0,1,2,3,4,5,6,7,8,9,A(a),B(b),C(c),D(d),E(e),F(f)。比如0x12abefac。而八进制以0开始,它的位数包括0,1,2,3,4,5,6,7。比如012347。二进制的数是由0和1组成的数,但在C语言里没有直接的二进制表示方法,即没有101101101 这种表示方法。

对于数的表示,需要经常把一个十进制的数与二进制数,十六进制数进行转换。

现在来看看如何将一个整数与二进制与十六进制的转换:表格法。

1.10进制转换为2进制

首先,在表格里写出在二进制里,每个位表示的整数的数值。比如,在上图里,第0位表示1,第1位表示2,

第2位表示4,第3位表示8,......,-1位为0.5,-2位为0.25,-3位为0.125,第N位表示的值为2^N。对于一个整数X,

首先在表格中找到比X小的最大数,比如如果X为100,那么在上面的表格里,比X小的最大数就是64,

所以,X在二进制中,此位为1;然后,用X减去该数,从右边表格里继续找比剩下小的最大数。一直到X最后变为0。

比如,以100.25为例子。

如下图:

先看整数部分:首先比100小的最大数是64,因此,该位记为1。100-64=36。比36小的最大数是32,因此,32所在的位为1。36-32=4。所以,比4小的最大数为4,所以4所在的位为1。4-4=0,因此转换结束。于是,100的二进制为“1100100”。

再看小数部分:0.25,比0.5要小,所以0.5位应该记为0,而0.25位恰好相等,所以0.25位记为1。

因此,100.25对应的二进制位:1100100.01

2.2进制转换为10进制

2进制转化为10进制,同样可以用表格法,分别将各个位对应的值相加,就可以得到对应的十进制。比如,对于二进制:1100101.11,其中各位对应的值为:

所以,1100101.11对应的10进制值为:64+32+4+1+0.5+0.25=101.75。

2进制转换为10进制公式为:

3.2进制转换为16进制

从右往左,把二进制分成4个位一组。左边不够4位,以0填充。然后将每4位转化为16进制的一个数。

比如:

1100100,从右往左按照4位为一组,进行组合结果为:0110    0100(左边补0)。其中0100对应的10进制为4,对应的16进制也是4。0110对应的10进制为6,对应的16进制也是6。所以,1100100对应的16进制为0x64。

为了方便转换,请记住下面的1,2,...a,b,c,d,e,f与二进制和10进制的对应关系:

4个bit表示的2进制:16进制:10进制对应关系:

0000:0:0

0001:1:1

0010:2:2

0011:3:3

0100:4:4

0101:5:5

0110:6:6

0111:7:7

1000:8:8

1001:9:9

1010:a:10

1011:b:11

1100:c:12

1101:d:13

1110:e:14

1111:f:15

4.16进制转换为2进制

16进制转化为2进制,也很简单。就是把依次对每个十六进制数中的每一位转换为4位2进制对应的值,

然后按照顺序排列起来就是对应的二进制。比如:对于整数0x80ac147f

0x80ac147f=1000 0000 1010 1100 0001 0100 0111 1111

注意:转换的时候,一定要以字节为单位,在十六进制中,2位为一个字节!

5.16进制转化为10进制

将16进制转化为10进制的方法:

比如:

6.10进制转换为16进制

10进制可以直接转化为16进制,只需要依次除以16,然后得到的余值,就是16进制。但这种方法,还是不大方便。方便的方法 ,

是先把10进制数转化为2进制数,然后再把2进制数转化为16进制数。

比如,100对应的二进制我们很快就能求出来是:1100100,把这个2进制按照4位为一个单位进行转化,0110 0100-->64所以对应的16进制为:0x64。

思考题:

1,实现int atoi(char *str),将字符串转化为整数:比如"100"-->100

提示:'9'-'0'-->9

2,实现char *itoa(int val,char buff),将整数转化为字符串:比如100-->"100"

提示:9+'0'-->'9'

3,计算下面表达式的值

(char)(127<<1)+1

(char)(-1>>1)+1

1<<2+3

4,(阿里面试题):八进制的256,转化成七进制数是多少?

5,(腾讯面试题):15*4=112成立,则系统采用的进制是()

A:6,B:7,C:8,D:9

6,(阿里面试题):2^100 % 7=()

A:2,B:3,C:4,D:5

7,(腾讯面试题):请设计一个函数,把十进制的正整数转化为4位定长的三十六进制字符串。三十六进制的规则为“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"。比如:

1=“0001”,10=“000A”,20=“000K”,35=“000Z”,36=“0010”

c语言2进制16进制 表格,标题:整数进制转换(十六进制,十进制,二进制)--表格法...相关推荐

  1. 16进制ff转化为二进制_3秒钟快速转换十六进制为二进制

    这里介绍下如何快速将十六进制转换为二进制: 举例,ipv6地址:FE80::1 先将FE80拆分为FE和80,我们知道F是十进制的15,E为14,我们知道二进制的八位组,全为1时(1111 1111) ...

  2. c 语言 16进制写法,C语言16进制中16怎么表示?

    C语言16进制中16怎么表示? 关注:275  答案:4  手机版 解决时间 2021-02-16 21:21 提问者童話被染上了傷 2021-02-15 23:02 C 中 16进制 16 是用10 ...

  3. 计算机进位制转换方法,计算机系统的硬件之三不同进位制之间的转换

    一. "十进制"与"二进制"的转换:除以2取余法 X ( 10) = b n × 2 n + b n-1 × 2 n-1 +--+ b 1 × 2 1 + b ...

  4. C语言中八进制和16进制怎么表示,原码,反码及补码,C语言按位取反运算符~

    借鉴被人的 C语言中8进制和16进制怎么表示 C语言本身支持的三种输入是: 1. 十进制.比如20,457: 2. 十六进制,以0x开头.比如0x7a: 3. 八进制,以0开头.比如05,0237 所 ...

  5. C语言中转义字符的使用——8进制16进制转义字符

    文章目录 C语言中8进制16进制转义字符的使用 什么是转义字符 常用的转义字符见下表 八进制与十六进制转义字符的使用 C语言中8进制16进制转义字符的使用 什么是转义字符 C语言允许一种特殊形式的字符 ...

  6. 51单片机c语言16进制数转换10进制数,51单片机C语言里 怎样将16进制 直接化成 10进制...

    满意答案 xzwyq 2013.10.13 采纳率:44%    等级:12 已帮助:16962人 我这儿有一个进制转换的程序,你可以参考一下: #include #include #include ...

  7. c语言 乱码转化为16进制_C语言版的16进制与字符串互转函数

    http://www.cnblogs.com/nio-nio/p/3309367.html /* // C prototype : void StrToHex(BYTE *pbDest, BYTE * ...

  8. c语言16进制按10进制输出,C语言编程:写一个函数,输入一个16进制数,输出相应的10进制数。...

    满意答案 chengexin 2013.05.27 采纳率:59%    等级:11 已帮助:10599人 #include #include #include #define N 1000 char ...

  9. 2进制 , 8进制 , 10进制 , 16进制 , 介绍 及 相互转换 及 快速转换

    为什么要使用进制数 数据在计算机中的表示,最终以二进制的形式存在 , 就是各种 <黑客帝国>电影中那些 0101010- 的数字 ; 我们操作计算机 , 实际 就是 使用 程序 和 软件 ...

最新文章

  1. Ubuntu 下类似 Xshell 工具、更换阿里源
  2. 删除文件夹时需要SYSTEM权限,简单解决
  3. 继承extends ,this super final 关键字,abstract抽象类,override方法重写
  4. Javascript 中 JSON 与对象 的相互转换
  5. height、clientHeight、scrollHeight、offsetHeight区别
  6. 22.Linux/Unix 系统编程手册(上) -- 信号:高级特性
  7. 关于reactor单线程模型的理解
  8. Python爬虫 | Selenium爬取当当畅销图书排行
  9. 转载nbsp;图像阈值选取
  10. 今天QQ被盗,异常情况调查与反思
  11. 客户端dmesg_查看dmesg,会打出很多的日志“TCP: too many of orphaned sockets”
  12. java 9宫格抽奖_js 实现9宫格抽奖(react)
  13. 怎么把python变成中文_又一个奇葩要求,Python是如何将“中文”转“拼音”的?...
  14. apache 的配置文件hthp.conf里边都是什么意思?
  15. 这不是结束,而是另一次重逢的开始
  16. 卢卡斯定理(详细证明)
  17. Python编程入门之Arcade游戏编程(一)
  18. root android oppo,OPPO R9S怎么ROOT oppor9s获取root权限的两种方法
  19. 03-sketch基本工具使用
  20. 语音信号线性预测分析(MATLAB实战篇)

热门文章

  1. nginx : OpenEvent Faied access is denied
  2. 计算机百分比在哪设置方法,excel表格怎么设置自动求百分比
  3. CMD中的一些Python操作:新建文件等
  4. 2020最新java头条校招实习面经解析(建议收藏系列)
  5. 大数据分布式存储方案的两种部署模式-分离式和超融合
  6. 两个音轨合并_怎样把两个音频文件合并成一个?
  7. IntelliJ IDEA 自动导入包 关闭重复代码提示
  8. 2021.11.16 孤尽训练营D22——单元测试与系统安全规约
  9. 韩松手机摄影笔记第十一课--静物美食及生活随拍
  10. 【电脑讲解】ie11一打开就停止工作的解决办法