美文网首页
2018-09-27 进制与字符串

2018-09-27 进制与字符串

作者: 米某人 | 来源:发表于2018-09-27 20:49 被阅读0次

计算机在存储数据的时候都是以二进制的形式去存的

十进制、十六进制、八进制、二进制、
1.十进制
基数:0、1、2、3、4、5、6、7、8、9、
进位:逢10进1,
每一位的值:
123 = 1100 + 210 + 31 = 110^2 + 210^1 + 310^0

二进制:

所有的 二进制数都是有0.1 组成只有两个基数
基数:0.1
进位:逢2进1 1011
每一位的值:11011 = 12^0 + 12^1 + 02^2 + 12^3 + 1*2^4

八进制

基数:0.1.2.3.4.5.6.7
进位:逢8进1
每一位的值:111 = 1 * 8^0 + 1 * 8^1 + 1* 8^2 = 73

十六进制:

基数:0~9;a-f(A-f)
进位:逢16进1
a(10)b(11)c(12)d(13)e(14)f(15)
每一位的值: 111 = 116^0 + 116^1 + 1*16^2 = 273

进制之间的转换:
其他进制转换成十进制:
乘积求和,每一位上的数 乘 进制次数 然后求和
十进制转其他进制:辗转取余法,除到零为止
123:(2)60 = 111100
123:(8)173
123:(16)7B
二进制转八进制:每3位二进制转换成1位的8进制
八转二:一位8进制转换成3位的二进制
671——> 110 111 001
二进制转16进制:每四二进制转化成1位16进制 (
位数不够用0站位)
(16) 67 ——> (2) 0110 0111
Python支持通过二进制、八进制、
十进制和十六进制的形式来直接表示一个整数
a.十进制:直接表示的数字的值都是十进制的数
b.二进制:需要加前缀 0b

print(0b1010)

八进制:需要前缀 0o/0o

print(0o67)
print(0o34)

十六进制:需要前缀 0x/0X

print(0x78af)
print(0Xfa5)
print(type(0xfa))

进制之间的转换:(结果是字符串)

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

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

bin是转换成二进制

oct(整数)——> 将括号中的的整数转化成八进制

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

oct是转换成八进制
hex(整数)——> 将括号内的整数转化成十六进制

print(hex(10),hex(0b110110),hex(0o56))

再次提醒计算机在存数字的时候,

  • 存的是数字的二进制,而且是二进制的补码
  • 计算机内存的最小单位是位:一位只能存储两个状态
  • 8位=1字节
  • 最高位是符号位

原码:

整数数字用二进制形式就是原码

比如十进制的10的原码就是:1010
正整数的元码
负数的符号为1
10原码0000 00001010
-10的原码 100000 00001010

反码:

正数的补码.反码是它的原码
负数的反码就是这个数的原码的
负数的补码就是他的反码-1
-10 ->(反码)11111111 11110101 ——>
补码 1111111 11110101

总结:正的反码和补码都是原码,负责的补码反码+1
反码是元马符号不变,所以其他
计算机存数字存补码,计算的时候也是补码,最后结果的时候看原码。

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

数字1 & 数字2:二进制的每一位,
两个都是为1结果才是1,否则为0
3&2 ——> 00000011 & 0000001o

print(3&2)

-3 & 2 —— 11111101 & 00000010 = 00000000

print(-3&2)

2按位或
数字1 | 数字2 :只要一个为1 ,结果就是1;
两个都为,结果才是0
3 | 2 ——> 00000011 | 00000010 = 00000011
-3 | 2 ——> 11111101 | 00000010 = (补)11111111
(原)0000001

4.(取反)
~数字:将每一位取反
~3 ---~ 0000011 = 1111100 = 10000100
作用;让指定位上的数置零,或者保留某一位的
数字:<< 位数:将补码想做移动指定的位数,
后面用0补齐
规律:正负数都适用:#m << n == m * (2^n)

print(10 << 3)
print(-10 << 4)
print()

num * 2 == num << 1 num << 2

右移:
数字>>位数: 将补码向右移指定位数,符号位不变,
在符号位后面补制定个数的0(正),
负数补(1)
规律:(只适合于正数):

m >> n == m // (2^n)

print(10 >> 1 ) 
print(10>> 2)
print(-245 >> 2)
print(-15 >> 1)
print(17 << 2)

字符串(str)

1.什么是字符串
Python中通过单引号或者上引号引起来的字符集就是字符串

'SSR'
'许愿氤氲之息'
'许愿清泉流响'
'许愿启明星的指引'

字符集是一切能被引入引号中的集合
字符串中引号中的字符集,就是各种不同的字符来组成的

2.Unicode编码

Python中的字符采用的是Unicode的编码
Unicode编码,是通过两个字节来对一个字符进行编码
02^16-1;032768个字符
几乎包含了世界上所有的符号,
ASCII编码:是通过一个字节来对一个字符进行编码
Unicode编码中包含了ASCII码表

'a' --> 97
'b' --> 98

str1 = 'how' 
str2 = '星辰命运肩甲'
print(str2)

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

print(chr(0x20a0))

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

print(ord('刘'),ord('雅'),ord('米'))
print(ord('a'))

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

str1 = '\u20b9\u20b5'
print(str1)

3.转移字符(适用于所有语言):
一些特殊功能和具有特殊意义的字符,
直接放在字符串的引号中无效,需要通过\来转义

  • \n --> 换行
  • ' --> '
  • \t --> 制表符
  • \ --> \
tr1 = '时光\"\"轨迹'
str2 = '\t铁马\'长戈'
print(str1)
print(str2)

相关文章

网友评论

      本文标题:2018-09-27 进制与字符串

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