美文网首页
Day3--进制和字符串

Day3--进制和字符串

作者: 留级是不可能留级的 | 来源:发表于2018-09-27 19:21 被阅读0次

一、进制

1.了解进制

常用的进制有 十进制、十六进制、八进制、二进制。计算机在存储数字的时候都是以二进制的形式去存的
进制 举例 基数 进位 计算方式
十进制 10,100 0~9 逢十进一 各位数字乘以10的相应次方求和
二进制 01,10,110 0,1 逢二进一 各位数字乘以2的相应次方求和
八进制 71,17 0~7 逢八进一 各位数字乘以8的相应次方求和
十六进制 1f,2D 0~9加上a(A)-f(F) 逢十六进一 各位数字乘以16的相应次方求和
进制之间的转换
当前进制 转换的进制 转换方式 举例
其他 十进制 每一位上的数乘以进制幕次数,然后求和 (2)110=6,(8)12=10,(16)1F=31
二进制 八进制 每三位二进制转换成一位八进制 (2)110 111 001=(8)617
八进制 二进制 一位八进制转换成三位二进制 (8)671=(2)110 111 001
十六进制 二进制 一位的16进制转换成4位的二进制 (16)67=(2)0110 0111
二进制 十六进制 每四位二进制转换成一位 (2)0110 0111=(16)67

2.python对进制的支持

进制 格式 举例
十进制 直接输入 10,100
二进制 加前缀0(数字0)b 0b0101,0b110
八进制 加前缀0(数字0)o 0o56,0o17
十六进制 加前缀0(数字0)x 0x1F,0x2a

3.python中进制之间转换

bin(整数) :将括号中的整数,转换成二进制形式
print(bin(10), bin(0o56), bin(0xaf))
oct(整数) :将括号中的整数,转换成八进制形式
print(oct(10), oct(0b110110), oct(0xaf))
hex(整数) : 将括号中的整数,转换成十六进制形式
print(hex(10), hex(0b110110), hex(0o56))

二、源码,反码和补码

计算机在存数字的时候,存的是数字的二进制的补码。计算机内存的最小单位是位:1位只能存储两个状态( 8位 = 1字节 )

1.原码:整数数字的二进制形式

十进制的10的原码就是:1010
最高位是符号位,如果正数符号位为0,负数符号位为1
10的原码 00000000 00001010
-10的原码 10000000 00001010

2.反码

正数的反码是它的原码
负数的反码就是这个数的原码的符号位不变,然后其他位置上的数取反(0->1,1->0)
-10 -> (原码)10000000 00001010 ->(反码)11111111 11110101

3.补码

正数的补码就是它的原码
负数的补码是它的反码加1
-10 -> (反码)11111111 11110101 -> (补码)1111111 11110110
总结:总结:正的反码和补码都是原码;负数的补码是反码加1,反码是原码符号位不变,其他位取反

三、位运算

位运算符 格式 结果 举例
&(按位与) 数字一 & 数字二 两个都为1结果才是1,否则为0 3 & 2 --> 00000011 & 00000010 == 00000010
|(按位与) 数字一 | 数字二 只要有一个为1,结果就是1;两个都为,结果才是0 -3 | 2 --> 11111101 | 00000010 = (补)11111111 = (原)10000001
^(异或) 数字一 ^ 数字二 不同为1,相同为0 -3^2 --> 11111101 ^ 00000010 = (补)11111111 = 10000001
~(取反) 数字一 ~ 数字二 将每一位取反 ~3 ---> ~00000011 = 11111100(补) = 10000100
<<(左移) 数字一 <<位数 将补码向左移动指定的位数,符号位不变,在最后面补指定个数的0 10 << 3=80
>>(右移移) 数字一 >>位数 将补码向右移动指定的位数,符号位不变,在符号位的后面补指定个数的0(正)或者1(负) 10 >> 1=5

四、认识字符串(str)

1.什么是字符串

python中通过单引号或者上引号引起来的字符集就是字符串
字符串中引号中的字符集,就是又各种不同的字符来组成的,如下:
'abhsjjd'
'26238'
'海金沙'
'^&#@(@&@*'
'😆'
'in'
'223hdu话说接电话**&&'
"uuk"
"237ashs"
'a'

2.Unicode编码

python中字符串中字符采用的是Unicode编码
Unicode编码:是通过两个字节来对一个字符进行编码(0~ 2^16-1)。它几乎包含了世界上所有的符号
ASCII编码:是通过一个字节来对一个字符进行编码
Unicode编码中包含了ASCII码表
chr(数字): 获取数字在Unicode编码表中对应的字符,返回的是只有一个字符的字符串
ord(字符): 获取字符对应的Unicode码
注:可以直接在字符串中写字符对应的编码值,格式:\u四位的十六进制

3.转义字符(适用于所有语言)

一些特能和具有特殊意义的字符,直接放在字符串的引号中无效,需要通过\来转义
转义字符 描述
(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数yy代表的字符,例如:\o12代表换行
\xyy 十进制数yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出

相关文章

网友评论

      本文标题:Day3--进制和字符串

      本文链接:https://www.haomeiwen.com/subject/suzeoftx.html