C语言基础——进制转换 / 数据表示
2016-07-17 08:43
225 查看
第一部分:进制转换
二进制:由0~1构成,逢2进1
八进制:由0~7构成,逢8进1
十六进制:由0~9、A~F构成,逢16进1
两个基本概念
基数:n进制基数为n
123.4 = 1*10^2 + 2*10^1 + 3*10^0 + 4*10^-1
位权:小数点左边第k位位权为 基数^k-1
小数点右边第k位位权为 基数^-k
其他进制转十进制(按权展开求和法)
十进制 123.4 = 1*10^2 + 2*10^1 + 3*10^0 + 4*10^-1
二进制 1011.1 = 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 + 1*2^-1= 11.5
八进制 123.4 = 1*8^2 + 2*8^1 + 3*8^0 + 4*8^-1= 83.5
十六进制 123.4 = 1*16^2 + 2*16^1 + 3*16^0 + 4*16^-1 = 291.25
十进制转其他进制
整数部分 :基数除法,倒序取余
小数部分 :基数乘法,顺序取整
十进制 - > 二进制
整数 除2倒序取余
(以4位为单位,不足高位补0)
小数 乘2正序取整
(遇到整数取1,小数再乘2)
其他进制间相互转换
二进制转八进制(3位二进制 = 1位八进制 对应“421”)
0101 1010 == 132
000=0 100=4
001=1 101=5
010=2 110=6
011=3 111=7
二进制转十六进制(4位二进制 = 1位十六进制 对应“8421”)
0101 1010 == 5A
0000=0 1000=8
0001=1 1001=9
0010=2 1010=A
0011=3 1011=B
0100=4 1100=C
0101=5 1101=D
0110=6 1110=E
0111=7 1111=F
第二部分:数据表示
整形数据的分类
1.无符号整型数据:所有位均表示大小。
N位无符号整型数据表示的取值范围为:0~2N-1
2.带符号整型数据:最高位表示符号:0为正、1为负。常用原码、反码、补码表示。
正数:三码同一。
例:已知x=+76D ,写出x的三码表示(8位)
解:x=+76D=+1001100B
因为x>0
所以:[x]原=[x]反=[x]补=01001100B
负数:
例1:已知x= -76D ,写出x的三码表示(8位)
解:x= -76D= -1001100B
[x]原=1
1001100B
[x]反=1
0110011B (原码取反)
[x]补=1 0110100B (末位加一)
例2:已知:[x]原=[y]反=[z]补=1100 1011B,求出x、y、z的大小关系。
[x]原=1100 1011B x = -100 1011B
[y]反=1100 1011B
[y]原=1011 0100B y = -011 0100B
[z]补=1011 0100B
[b][b][z]原=1100 1100B z = -100 1100B
[/b][/b]
[b][b]y > x > z[/b][/b]
二进制:由0~1构成,逢2进1
八进制:由0~7构成,逢8进1
十六进制:由0~9、A~F构成,逢16进1
两个基本概念
基数:n进制基数为n
123.4 = 1*10^2 + 2*10^1 + 3*10^0 + 4*10^-1
位权:小数点左边第k位位权为 基数^k-1
小数点右边第k位位权为 基数^-k
其他进制转十进制(按权展开求和法)
十进制 123.4 = 1*10^2 + 2*10^1 + 3*10^0 + 4*10^-1
二进制 1011.1 = 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 + 1*2^-1= 11.5
八进制 123.4 = 1*8^2 + 2*8^1 + 3*8^0 + 4*8^-1= 83.5
十六进制 123.4 = 1*16^2 + 2*16^1 + 3*16^0 + 4*16^-1 = 291.25
十进制转其他进制
整数部分 :基数除法,倒序取余
小数部分 :基数乘法,顺序取整
十进制 - > 二进制
整数 除2倒序取余
(以4位为单位,不足高位补0)
小数 乘2正序取整
(遇到整数取1,小数再乘2)
其他进制间相互转换
二进制转八进制(3位二进制 = 1位八进制 对应“421”)
0101 1010 == 132
000=0 100=4
001=1 101=5
010=2 110=6
011=3 111=7
二进制转十六进制(4位二进制 = 1位十六进制 对应“8421”)
0101 1010 == 5A
0000=0 1000=8
0001=1 1001=9
0010=2 1010=A
0011=3 1011=B
0100=4 1100=C
0101=5 1101=D
0110=6 1110=E
0111=7 1111=F
第二部分:数据表示
整形数据的分类
1.无符号整型数据:所有位均表示大小。
N位无符号整型数据表示的取值范围为:0~2N-1
2.带符号整型数据:最高位表示符号:0为正、1为负。常用原码、反码、补码表示。
正数:三码同一。
例:已知x=+76D ,写出x的三码表示(8位)
解:x=+76D=+1001100B
因为x>0
所以:[x]原=[x]反=[x]补=01001100B
负数:
例1:已知x= -76D ,写出x的三码表示(8位)
解:x= -76D= -1001100B
[x]原=1
1001100B
[x]反=1
0110011B (原码取反)
[x]补=1 0110100B (末位加一)
例2:已知:[x]原=[y]反=[z]补=1100 1011B,求出x、y、z的大小关系。
[x]原=1100 1011B x = -100 1011B
[y]反=1100 1011B
[y]原=1011 0100B y = -011 0100B
[z]补=1011 0100B
[b][b][z]原=1100 1100B z = -100 1100B
[/b][/b]
[b][b]y > x > z[/b][/b]
相关文章推荐
- C#进制之间的相互转换详解
- C语言中进制知识汇总
- js数值和和字符串进行转换时可以对不同进制进行操作
- Python内置函数bin() oct()等实现进制转换
- C++实现十六进制字符串转换为十进制整数的方法
- javascript十六进制及二进制转化的方法
- php实现将任意进制数转换成10进制的方法
- 使用Python内置的模块与函数进行不同进制的数的转换
- python实现基本进制转换的方法
- Python 26进制计算实现方法
- 进制转换
- java中四种进制的转换
- C#生成短地址+任意进制转换
- 进制转换
- 黑马程序员——Java基础——Java中几种进制的相互转换
- [DanoR][Java小码][将double转换为不同进制后用String输出]
- C语言零基础入门—Hello, World!
- 黑马程序员-学习笔记C语言03
- 10bit数和12bit数的转换
- 计算机中的进制