day-3-进制和字符

进制


计算机在存储数字的时候都是以二进制的形式去存的
十进制、十六进制、八进制、二进制

1.十进制

基数:0~9
进位:逢十进一
每一位的值:123 = 1 * 100 + 2 * 10 + 3 * 1 = 1 * 10 ^ 2 + 2 * 10 ^ 1 + 3 * 10 ^ 0
例:100 78 2 938 8980799
例:

111 = 1 * 10 ^ 0 + 1 * 10 ^ 1 + 1 * 10 ^ 2 = 111

2.二进制

基数:0,1(所有的二进制都是由0和1组成)
进位:逢二进一

每一位的值:11011 = 1 * 2 ^ 0 + 1 * 2 ^ 1 + 0 * 2 ^ 2 + 1 * 2 ^ 3 + 1 * 2 ^ 4 = 27
例:1100 1011 11111111 11001111
例:

111 = 1 * 2 ^ 0 + 1 * 2 ^ 1 + 1 * 2 ^ 2 = 7

3.八进制

基数:0~7
进位:逢八进一
每一位的值:0213 = 3 * 8 ^ 0 + 1 * 8 ^ 1 + 2 * 8 ^ 2 = 139
例:777 67 271
例:

111 = 1 * 8 ^ 0 + 1 * 8 ^ 1 + 1 * 8 ^ 2 = 73

4.十六进制

基数:0~9 AF(af)
进位:逢十六进一
每一位的值:0x28E = 14 * 16 ^ 0 + 8 * 16 ^ 1 + 2 * 16 ^ 2 = 657
例:28EF EF FF 20AB
例:

111 = 1 * 16 ^ 0 + 1 * 16 ^ 1 + 1 * 16 ^ 2 =273

5.进制之间的转换

a.其他进制转换成十进制:每一位上的数乘以进制幂次数,然后求和
b.十进制转其他进制:辗转取余法
123:(2)01111011

[图片上传失败...(image-899994-1539944288924)]

123:(8)173

[图片上传失败...(image-b6a4fa-1539944288924)]

123:(16)7B

[图片上传失败...(image-c9c5e8-1539944288924)]

c.二进制转八进制:每三位二进制数转换成一位的八进制数(每三位二进制计算一次)
例:

(2)001 111 011--->(8)123

八进制转二进制:一位八进制数转换成三位的二进制数
例:

(8)671--->(2)110 111 001

d.二进制转十六进制:每四位二进制转换成一位十六进制(每三位二进制计算一次)
例:

(2)0111 1011--->(16)7B

十六进制转二进制:一位十六进制转换成四位的二进制
例:

(16)671--->(2)0110 0111 0001

e.八进制转十六进制或十六进制转八进制

可以先将八进制(十六进制)转换成二进制,再将二进制转换成十六进制(八进制)

6.python对进制的支持

python支持通过二进制、八进制、十进制、十六进制的形式来直接表示整数
(会先在后台转换成二进制,计算出结果后会转成十进制显示出来)
a.十进制:直接写的数字的值都是十进制的数

10

100

76

b.二进制:需要加前缀->0b

0b1010

0b1110

c.八进制:需要加前缀->0o/0O

0o56

0o77

d.十六进制:需要加前缀->0x/0X

0x56F
0x56fa
0xFFBA

e.进制的转换

bin(整数) --> 将括号中的整数,转换成二进制形式的数

print(bin(10),bin(0o56),bin(0xaf))

0b1010 0b101110 0b10101111

oct(整数) --> 将括号中的整数,转换成八进制形式的数

print(oct(10),oct(0b11011001),oct(0xaf))

0o12 0o331 0o257

hex(整数) --> 将括号中的整数,转换成八进制形式的数

print(hex(10),hex(0b11011001),hex(0o78))

0xa 0xd9 0x3b

原码反码和补码


计算机在存数字的时候,存的是数字的二进制的补码。
计算机最小的内存单位是位,1位只能存储两个状态。
位等价于比特(bit),是同一个单位。
8位 = 1字节(Byte)
8比特(bit) = 1字节(Byte)
(ps:一个数在计算机中的二进制表示形式,叫做这个数的机器数,机器数的形式值就不等于真正的数值?;魇牛罡呶淮娣欧?,正数为0,负数为1)

a.原码

数字的二进制形式
十进制的10(十)的原码就是1010
最高位是符号位,正数符号位为0,负数的符号位为1
10的原码:0000 0000 0000 1010(两个字节的存储空间)
-10的原码:1000 000 0000 1010

b.反码

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

c.补码

正数的补码就是其本身

负数的补码就是它的反码加1

-10 --> (反码)11111111 11110101 + 1 --> (补码)11111111 11110110

总结:

  • 原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。
  • 反码的表示方法是:正数的反码是其本身;负数的反码是在其原码的基础上,符号位不变,其余各个位取反。
  • 补码的表示方法是:正数的补码就是其本身;负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(即在反码的基础上+1)

(ps:负数计算时用补码进行计算)


位运算

位运算符:&(按位与), |(按位或), ^(异或), ~(按位取反), >>(右移), <<(左移)
a.&(按位与)

数字1 & 数字2 :二进制的每一位,两个都为1结果才为1,否则为0
例:

3 & 2 -->0000 0011 & 0000 0010 == 0000 0010
-3 & 2 -->1111 1101(补码) & 0000 00010 == 0000 0000

作用:让指定位上的数置零,或者保留某一位上的值

b.|(按位或)

数字1 | 数字2 :只要有一位上的数为1,结果就为1;两个都为0,结果才为0。

3 | 2 -->0000 0011 | 0000 0010 == 0000 0011
-3 | 2 -->1111 1101(补码) | 0000 00010 == 1111 1111(补码) == 1000 0001(原码)
(1111 1111 - 1 == 1111 1110,首位不变再取反就是原码,即1000 0001)

c.^(异或)

数字1 ^ 数字2:不同为1,相同为0

3 ^ 2 -->0000 0011 ^ 0000 0010 == 0000 0001
-3 ^ 2 -->1111 1101(补码) ^ 0000 00010 == 1111 1111(补码) = 1000 0001 (原码)
(1111 1111 - 1 == 1111 1110,首位不变再取反就是原码,即1000 0001)

d. ~(按位取反)

~数字:将每一位取反

~3 --> ~0000 0011 = 1111 1100 (符号位变,即变为了补码)= 1000 0100

~-3 --> ~1111 1101(补码) = 0000 0010 (符号位变,即变为了补码)
(所得数符号位为0,为正数,正数的原码==反码==补码)

e.>>(右移)

数字 >> 位数:将补码向右移动指定的位数,符号位不变,在符号位的后面补指定个数的0(正数)或者1(负数)
移位后,前面空出来的位置,正数补0,负数补1。
规律(适用于正负数):m << n == m // (2^n)
(如果是负数,可以先当做正数计算,得到的结果四舍五入再加负号)

print(10 >> 1)
print(-10 >> 1)
print(-10 >> 2)

5
-5
-3

f.<<(左移)(重点掌握)

数字 << 位数:将补码向左移动指定位数,符号位不变,在最后面补指定个数的0(正数)或者1(负数)。
规律(正负数都适用):m << n == m * (2^n)
例:

print(10 << 3) 
print(-10 << 2) 
print(2 << 2)   
print(-23 << 2)

80
-40
8
-92

字符串(str)


1.什么是字符串

python中通过单引号或者双引号引起来的字符集就是字符串。

字符串中引号中的字符集,就是由各种不同的字符来组成的

例:

'jhadk'
'2376'
'3827dhj'
'小呆'
'&……%*……&('
"hakhfaj"
"8923jhfdn"
"鄂小呆"

2.Unicode编码

python中字符串中字符采取的是Unicode编码

Unicode编码:是通过两个字节来对一个字符进行编码,0 ~ 2^16-1(65535)。它几乎包含了世界上所有的符号。

ASCII编码:是通过一个字节来对一个字符进行编码

Unicode编码中包含了ASCII码表

chr(数字):获取数字在Unicode编码表中对应的字符,返回的是只有一个字符 的字符串

    print(chr(97))
    print(chr(0x1342))

a
?

ord(字符):获取字符对应的Unicode编码

    print(ord('鄂'), ord('小'))
    print(ord('錒'))

37122 23567
37650

可以直接在字符串中写字符对应的编码值,格式:\u十六进制的编码值

例:

str1 = '\u4e00\u4e01'
print(str1)

乕乷

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

一些特有功能具有特殊意义的字符,直接放在字符串的引号中无效,需要通过\来转义

制表符 含义
\n 换行
' '
" "
\t 制表符(相当于TAB)
\ \

例:

str1 = 'hello\'world'   -----> hello'world
str2 = '\tjkba'   ----->    jkba
str3 = 'akjdba\nkj' ----->akjdba
                          kj
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容

  • 一、进制 计算机在存储数字的时候都是以二进制的形式存储的 进制之间的转换 a.其他进制转换成10进制:每一位上的数...
    雨雨雨90阅读 388评论 0 0
  • 一、复习 1、常用快捷键2、注释3、标识符(数字、字母、_组成,数字不能开头)4、缩进5、数据类型int 、 f...
    Sakura_flower阅读 1,190评论 0 4
  • 进制基本概念 什么是进制?进制是一种计数的方式,数值的表示形式 常见的进制十进制、二进制、八进制、十六进制 进制书...
    极客江南阅读 2,001评论 0 11
  • 网站乱码问题我们会经常碰到,大多见于非英文的中文字符或其他字符乱码,而且,这类问题常常是因为编码方式问题,主要原因...
    波段顶底阅读 2,842评论 1 9
  • 201712/05(09/90) 大家早上,我是王晟,感恩易效能让我有动力早睡早起,感恩大家的相互鼓励,感恩自己努...
    Sam王晟阅读 176评论 1 0