㈠ python中的进制转换和原码,反码,补码
python中的进制转换和原码,反码,补码
计算机文件大小单位
b = bit 位(比特)
B = Byte 字节
1Byte = 8 bit #一个字节等于8位 可以简写成 1B = 8b
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
1EB = 1024PB
进制分类
二进制:由2个数字组成,有0 和 1 python中标志:0b
八进制:由8个数字组成,有0,1,2,3,4,5,6,7 python中标志:0o
十进制:有10个数字组成,有0,1,2,3,4,5,6,7,8,9 python中标志:无
十六进制:有16个数字组成,有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f(进制字母大小写都可以,分别代表10,11,12,13,14,15) python中标志:0x
python中的进制转换:
其他进制转换为十进制:int(相应进制)
其他进制转换为二进制:bin(相应进制)
其他进制转换为八进制:oct(相应进制)
其他进制转换为十六进制:hex(相应进制)
二进制 转化成 十进制:
例: 0b10100101
运算:1* 2^0 + 0* 2^1 + 1* 2^2 + 0* 2^3 + 0* 2^4 + 1* 2^5 + 0* 2^6 + 1* 2^7=
1 + 0 + 4 + 0 + 0 + 32 + 0 + 128 = 165
八进制 转化成 十进制:
例: 0o127
运算:7*8^0 + 2*8^1 + 1*8^2 = 7+16+64 = 87
十六进制 转化成 十进制:
例: 0xff
运算:15*16^0 + 15*16^1 = 255
十进制 转化成 二进制:
426 => 0b110101010
运算过程: 用426除以2,得出的结果再去不停地除以2,
直到除完最后的结果小于2停止,
在把每个阶段求得的余数从下到上依次拼接完毕即可
十进制 转化成 八进制:
426 => 0o652
运算过程: 用426除以8,得出的结果再去不停地除以8,
直到除完最后的结果小于8停止,
在把每个阶段求得的余数从下到上依次拼接完毕即可
十进制 转化成 十六进制:
运算过程: 用426除以16,得出的结果再去不停地除以16,
直到除完最后的结果小于16停止,
在把每个阶段求得的余数从下到上依次拼接完毕即可。
相关推荐:《Python视频教程》
原码,反码,补码
实际人们看到的数字是原码转化之后显示出来的。
而原码是通过补码得到的。
计算机的所有数据在底层都是以二进制的补码形式存储。
***进制转换的时候需要先把内存存储的补码拿出来变成原码在进行转换输出***
反码:二进制码0变1,1变0叫做反码,反码用于原码补码之间的转换。
补码:用来做数据的存储运算,可以实现计算机底层的减法操作,因而提出(可以表达出一个数的正负)。
也就是说默认计算机只会做加法,例:5+(-3) => 5 - 3。
乘法除法是通过左移和右移 << >> 来实现。
正数高位补0,负数高位补1。
正数:
原码 = 反码 = 补码
负数:
反码 = 原码取反(除高位)
补码 = 反码加1
反码 = 补码减1
原码 = 反码取反(除高位)
我们会发现,在取反前减1和在取反后加1的效果是一样的,这就和-2-1 = -(2+1)一个道理,所以会得出这样的规律:
原码 = 补码取反加1
补码 = 原码取反加1
一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 叫符号位正数为0, 负数为1。
比如
正数1在计算机中的存储即为
0 00000000000000000000001
负数1 在计算机中的存储即为
1 00000000000000000000001
一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码。
正数的反码就是原码,负数的反码等于原码除符号位以外所有的位取反。
正数的补码与原码相同,负数的补码为 其原码除符号位外所有位取反(得到反码了),然后最低位加1。
所以原码,反码,补码正数情况下是一致的,负数情况下是不一致的。
计算机的运算过程实际就是补码相加的一个过程。
比如-2 + 3
-2 的原码为
1 000000000000000000000000010
反码为:
1 111111111111111111111111101
补码为:
1 111111111111111111111111110
3的原码为
0 000000000000000000000000011
反码为:
0 000000000000000000000000011
补码为:
0 000000000000000000000000011
那么二者补码相加结果为
1 111111111111111111111111110
+
0 000000000000000000000000011
=
10 000000000000000000000000001(计算机存储为32位,故前面溢出的1被舍弃,高位为0)
0 000000000000000000000000001
结果为1
再比如-2 + 1
-2 的原码为
1 000000000000000000000000010
反码为:
1 111111111111111111111111101
补码为:
1 111111111111111111111111110
1的原码为
0 000000000000000000000000001
1的反码为:
0 000000000000000000000000001
1的补码为:
0 000000000000000000000000001
二者的补码相加结果为
1 111111111111111111111111110
+
0 000000000000000000000000001
=
1 111111111111111111111111111
得出的补码转化为原码, 最低位减一得到反码,然后除符号位外所有位取反,得到结果
1 000000000000000000000000001
结果为1
㈡ 0b是多少进制呢
0b是二进制。为了便于区分进制设定标准标识符,0b开头代表二进制,例如0b110,0开头代表八进制,例如0110,整数代表十进制,例如110,0x开头代表十六进制。例如0x110,n转十进制公式:数值乘以进制的n-1次方,xyz=x*n^2+y*n^1+z*n^0。
进制概括
进制也就是进位计数制,是人为定义的带进位的计数方法有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的正字计数法,以及类似的tally mark计数。对于任何一种进制---X进制,就表示每一位置上的数运算时都是逢X进一位。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。
㈢ python中数据类型
数字类型:
①整型:
通常被称为是整型或整数,可以是正整数或负整数,不带小数点。Python3整型是没有限制大小的,可以当做long类型使用, 但实际上由于机器内存的有限,我们使用的整数是不可能无限大的。
整型的四种表现形式:
2 进 制:以'0b'开头。例如:'0b11011'表示10进制的27
8 进 制:以'0o'开头。例如:'0o33'表示10进制的27
10进制:正常显示
16进制:以'0x'开头。例如:'0x1b'表示10进制的27
各进间数字进行转换(内置函数):
bin(i):将i转换为2进制,以“0b”开头。
oct(i):将i转换为8进制,以“0o”开头。
int(i):将i转换为10进制,正常显示。
hex(i):将i转换为16进制,以“0x”开头。
②浮点数:
浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
③布尔类型:
所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有布尔True或False值。空对象,值为零的任何数字或者Null对象None的布尔值都是False。在Python3中True=1,False=0,可以和数字型进行运算。
下列对象的布尔值是False:
None;False;0(整型),0.0(浮点型);0L(长整形);0.0+0.0j(复数);“”(空字符串);[](空列表);()(空元组);{}(空字典)。
值不是上列的任何值的对象的布尔值都是True,例如non-empty,non-zero等。用户创建的类实例如果是定义了nonzero(_nonzeor_())或length(_len_())且值为0,那么它们的布尔值就是False。
④复数:
复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
㈣ python中0b1010是什么意思
0b1010表示二进制的1010,就是十进制的10,
a>>1表示去掉a二进制的最后一位所以a变成了ob101也就是十进制的5
需要注意的是>>是针对二进制进行操作,比如
a=10
a>>1
结果a还是5
㈤ 怎样用python进行二进制,八进制,十进制转换
从二进制转换为十进制有几种方式
第一种是在二进制数前加上0b,显示时会自动转换为十进制,注意这并不是字符串
x = 0b1010print(x)
如果是字符串可以利用eval求值
x = eval('0b1010')
第二种是利用int函数,字符串可以以0b为前缀,也可以不使用
int('1010',base=2)int('0b1010',2)
函数会将输入base进制的字符串转换为十进制
㈥ python8位怎么表示
二进制,十进制。
答案python2.5及更早版本:可以使用int(01010101111,2)python2.5及更早版本:用noway来表示二进制文本。python2.6测试版:可以这样做:0b1100111或0b1100111...python2.6测试版:也允许0o27或0o27(第二个字符是字母o)表示八进制。python3.0测试版:与2.6相同,但不再允许老版本027八进制的语法。
进制转换:进制转换是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。位权是指,进位制中每一固定位置对应的单位值。简单转换理念:把二进制三位一组分开就是八进制,四位一组就是十六进制二。
㈦ python提供了三种基本的数字类型
整数、浮点数
㈧ Python中的不同进制的语法和转换
不同进制的书写方式
八进制(Octal) 0o377
十六进制(Hex) 0xFF
二进制(Binary) 0b11111111
不同进制之间的转换
Python提供了三个内置的函数,可以用来在不同进制间做转换。
>>> oct(255), hex(255), bin(255)
('0o377', '0xff', '0b11111111')
还可以使用int函数,把字符串转成数值
>>> int('255'), int('0xFF', 16)
(255, 255)
除此之外还可以使用eval,功能类似于int函数,但是它的参数是python代码。
>>> eval('255'), eval('0xFF')
(255, 255)
当然也可使用字符串的格式化输出
>>> '{0:0}, {1:x}, {2:b}'.format(255, 255, 255)
'255, ff, 11111111'
>>> '%o, %x, %X' % (255, 255, 255)
'377, ff, FF'
㈨ 前缀0x表示十六进制,0B是表示二进制吗
0B表示的不是二进制。
正确的进制前缀是:
0x 十六进制
D(Decimal) 十进制
B(Binary) 二进制
㈩ python 二进制是0b开头 ,0代表什么呢,b是binary system的b。那0是什么呢
结果为
2
因为虽然>>是python的二进制右移命令
0b1010 右移2位后变为
0b10
也就是十进制的2