Python学习笔记之二进制、八进制、十六进制相互转换&原码、反码、补码

二进制、八进制、十六进制相互转换&原码、反码、补码

  • 一、科普电脑存储机制
  • 二、二进制、八进制、十六进制相互转换
    • 1、表示方式
    • 2、相互转换
    • 3. 在PyCharm中使用.format()函数进行转换
  • 三、原码、反码、补码
    • 1、正数:
    • 2、负数:

一、科普电脑存储机制

电脑的存储方式:以二进制的方式存储。

  1. 内存:(运行空间,掉电清除)

  2. 磁盘:(永久持续化存储空间,除非坏了)

     计算机中处理数据的单位:字节(Byte — B)
     1B = 8b 【1字节=8位】  	
     1K = 1024B
     1M = 2^10KB
     1G  = 1024M
     1T  =  1024G
    

二、二进制、八进制、十六进制相互转换

1、表示方式

二进制:0b 标识

逢二进一

0 + 1 = 1
1 + 1  = 10
1 1 1
1 0 1
------
11 0 0
111 + 101 = 1100
110 + 1011 =10001
1001 + 1011 =10100

八进制:0o

0 1 2 3 4 5 6 7

逢八进一

1 + 6= 7
1 + 7 = 10
12 + 56 = 70
12
56
---
7 0
756 + 342 =1320
756
342
---
1320
521 + 1314 =2035
 521
1314
-----
2035 

十进制:0d【在python中若没有标明,默认使用十进制】

0 1 2 3 4 5 6 7 8 9

逢十进一

十六进制:0x

0 1 2 3 4 5 6 7 8 9 a b c d e f

逢十六进一

 1 + f = 10
 5 + d = 12
 1f + 2d3 = 2f2
 cf4 + 32d = 1021
 2eb + 3ed = 6d8

2、相互转换

十进制换算成二进制

倒除法,余数逆序

5--》101
12--》1100
9 --》1001
15 --》1111
21 ---》10101

二进制换算成十进制

当前的数字乘以2的位数次方,最后相加。【位数从0开始数】

位数从右往左数,从0开始 2^0 =1

1 0 1
1x2^2+0x2^1 +1x2^0= 5
1010 =10
11001=25
110110 =54 

八进制转换二进制

一位转三位,高位不够补0

12 ---->001010
563 -->101110011
721 -->111010001
542-->101100010

二进制转换为八进制

三位一取:低位开始取,高位不够补0

001011100 ==>134
111 011 101 ==>735
101 101 001==>551
10 101 010 ==>252

十六进制转换二进制

一位转四位,位数不够高位补0

f --> 1111
d --> 1101
3fc ==>11 1111 1100
78a ==> 111 1000 1010
de5 ==>1101 1110 0101

二进制转换十六进制

四位一取,从低位开始取,高位不够补0

10 0111 ==>27
1011 0111 ==>b7
1110 1111 0111 ==>ef7
1 1011 1101 1110 ==>1bde
0110 1101 1011==>6db

3. 在PyCharm中使用.format()函数进行转换

#!/usr/bin/env python
#-- coding: utf-8 --
#-- author:HFZeng --

转二进制
“{0:b}”.format(x)
将x转为二进制

print("{0:b}".format(10))
print("{0:b}".format(0o10))
print("{0:b}".format(0x10))

1010
1000
10000

“{0:o}”.format(x)
将x转为八进制

print("{0:o}".format(0b10))
print("{0:o}".format(10))
print("{0:o}".format(0x10))

2
12
20

“{0:d}”.format(x)
将x转为十进制

print("{0:b}".format(10))
print("{0:b}".format(0o10))
print("{0:b}".format(0x10))

2
8
16

“{0:x}”.format(x)
将x转为十六进制

print("{0:x}".format(0b10))
print("{0:x}".format(0o10))
print("{0:x}".format(10))

2
8
a

三、原码、反码、补码

注意计算机是以“补码”的形式存储数据
反码、补码是为了让计算机能够处理正、负数之间的运算

1、正数:

	原码,反码,补码三码合一

2、负数:

原码:最高位【符号位】为1,其他位与正数的表示相同

反码:除符号位外,其他位按位取反

补码:反码加1

2^8表示无符号数是 0~255, 表示有符号数是 -128~+127
(有符号数的取值范围为:-2^(n-1) ~ 2^(n-1)-1 (其中n为数据位数),当n=8时,数据取值范围:-128 ~ 127
无符号类型n=8时,数据取值范围为: 0 ~255)

你可能感兴趣的:(Python学习篇)