C语言基础——进制转换 / 数据表示

第一部分:进制转换

二进制:由0~1构成,逢2进1
八进制:由0~7构成,逢8进1
十六进制:由0~9、A~F构成,逢16进1

两个基本概念

基数:n进制基数为n

123.4 = 110^2 + 210^1 + 310^0 + 410^-1 

位权:
小数点左边第k位位权为   基数^k-1
小数点右边第k位位权为   基数^-k

其他进制转十进制(按权展开求和法)

十进制  123.4 = 110^2 + 210^1 + 310^0 + 410^-1 
二进制  1011.1 = 12^3 + 02^2 + 12^1 + 12^0 + 12^-1= 11.5
八进制  123.4 = 1
8^2 + 28^1 + 38^0 + 48^-1= 83.5
十六进制 123.4 = 1
16^2 + 216^1 + 316^0 + 4*16^-1 = 291.25

十进制转其他进制

整数部分 :基数除法,倒序取余
小数部分 :基数乘法,顺序取整
 
十进制 - > 二进制
整数  除2倒序取余 (以4位为单位,不足高位补0)
小数  乘2正序取整 (遇到整数取1,小数再乘2)

其他进制间相互转换

  1. 二进制转八进制(3位二进制  =  1位八进制    对应“421”)
    0101 1010  ==  132
    000=0    100=4
    001=1    101=5
    010=2    110=6
    011=3    111=7
     
  2. 二进制转十六进制(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 
[z]原=1100 1100B                z = -100 1100B
y > x > z

猜你喜欢

转载自www.cnblogs.com/chenxinshuo/p/11927292.html
今日推荐