小白快速掌握之进制之间的转化和原码,反码,补码之间转换

目录

进制之间的转换

其他进制转十进制:对应的数乘以其他进制的指数次幂(0开始)

十进制转其他进制:除以其他进制倒取余数

二进制和八进制:

二进制和十六进制:

二进制转十六进制:

基本的数据类型

Char:(1字节 == 8bit)

Int :(4字节 == 32bit)

Short:(2字节 == 16bit)

float(单精度浮点数):%f-------默认小数点后6位

Double(双精度浮点数):%lf------默认小数点后6位

进制之间的转换

我们所熟悉的进制有:十进制、二进制、八进制、十六进制

二进制:逢2进1: 0~1

八进制:逢8进1:0~7

十进制:逢10进1:0~9

十六进制:逢16进1:0~9、a(A)~f(f)

为了区分不同的进制:(在不同的进制前加上前缀)

76     076:(八进制)  0x76(十六进制)0xaf / 0XAF

其他进制转十进制对应的数乘以其他进制的指数次幂(0开始)

二进制转十进制:1010-----------> 0*2^0+1*2^1+0*2^2+1*2^3

八进制转十进制:075------------> 5*8^0+7*8^1

十六进制转十进制:0xafc2----->2*16^0+12*16^1+15*16^2+10*16^3

十进制转其他进制除以其他进制倒取余数

十进制转二进制:除2倒取余     37-------------> 100101

 

十进制转八进制:除8倒取余     37-------------> 045

十进制转十六进制:除16倒取余  37------------->0x25

 

二进制和八进制:

用三位二进制可以表示0~7

0~7   421

000-----------0

001-----------1

010-----------2

011-----------3

100----------4

101----------5

110-----------6

111-----------7

八进制转二进制:

076------------------> 111 110

 

二进制转八进制:

010  101  010  011----->02523

二进制和十六进制:

用4位二进制可以表示0~9,a(A)~f(F)

0~9、 a~f

0-----------0000

1-----------0001

2-----------0010

3-----------0011

4-----------0100

5-----------0101

6-----------0110

7-----------0111

8-----------1000

9-----------1001

a-----------1010

b-----------1011

c-----------1100

d-----------1101

e-----------1110

f-----------1111

十六进制转二进制:

0xafca----------------->1010  1111  1100  1010

 

二进制转十六进制:

0101  0001  0101------->0x515

 

基本的数据类型

 有符号数:有正有负(在计算机中所有的数据都是以二进制的补码进行存储的)

有符号数:最高位用来表示符号位,0正1负

正数的原码、反码、补码都是一样的

+10: 0000 1010 ---------------------0000 1010

负数:

负数的原码:符号位为1,数据位直接转换为二进制

负数的反码:符号位不变,其他位取反(1变0,0变1)

负数的补码:反码加1

-10:

原码:1000 1010

反码:1111 0101

补码:1111 0110

切记切记有符号数是以补码的形式储存的!

知道一个数的补码:如何求得原码

1、减1取反:

补码:1111 0110

减1:  1111 0101

取反:1000 1010  -----> -10

2、补码的补码就是原码:

补码:1111 0110

取反:1000 1001

加1: 1000 1010--------> -10

Char:(1字节 == 8bit)

值域:

Unsigned  char: 0000 0000 ----------1111 1111  ( 0~255)

Signed    char 1000 0000 ----------0111 1111   (-128~127)

补码存在:1000 0000

反码:        1111 1111

加1  :    1 1000 0000--------->>>1是符号位,表示负数,1的7次方是128,加符号为,所以是-128

0111 1111正数,原码反码补码一样,计算是2的7次方-1是127

当超过char可以表示的范围时:从头再开始数

Unsigned char c = 260;

Printf(“%d\n”,c);  ------------->4

Signed char  a = 130;

Printf(“%d\n”,a); ------------> -126

Int (4字节 == 32bit)

值域:

Unsigned int :(0  ~  2^32-1)

0000 0000 0000 0000 0000 0000 0000 0000---1111 1111 1111 1111 1111 1111 1111 1111

Signed   int :( -2^31 ~ 2^31-1)

1000 0000 0000 0000 0000 0000 0000 0000---0111 1111 1111 1111 1111 1111 1111 1111

方法同char类型

Short:(2字节 == 16bit)

值域:

Unsigned short :(0- 2^16-1)

0000 0000 0000 0000 ----------- 1111 1111 1111 1111

Signed short:(-2^15 ----2^15-1)

1000 0000 0000 0000 ------0111 1111 1111 1111

方法同char类型

float(单精度浮点数):%f-------默认小数点后6位

4字节;保证6~7位的有效数据

 

Double(双精度浮点数):%lf------默认小数点后6位

8字节:有效数字的位数一般位:15~16位

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值