python3中的 十进制 二进制 八进制 十六进制表示及互相转换

本文详细解释了二进制、八进制、十进制和十六进制的概念及计算方法,通过实例展示了不同进制之间的转换过程,并介绍了Python中如何进行进制转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大部分进制都是以10为一个阶段。

一般生活中我们常用十进制即满十进一,即0+1=1,1+1=2,而9+1=10往前进了一位。

二进制则是我们看的黑客电影中的10001010010000(这个数等同于十进制的8848),计算方法:0+1还是等于1,而1+1则等于10,相当于1在往上加则向前进一位。
二进制单独的0和1等于十进制单独的0和1,二进制的10则等于十进制的2(满二进一),二进制的11则等于十进制的3,以此类推。

八进制也容易理解,便是满八进一,八进制的10就是十进制8,即7+1=10,往下以此类推。

十六进制就比较难一点,因为十六进制已经超过10了。所以,十六进制从十开始用字母代替,即十进制的1—16在十六进制中表现为1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、10。再往下以此类推即可。

 

python3中的数字默认进制为十进制,即python3默认10=9+1。

在python中二进制用0b加相应数字来表示,8进制用0o加相应数字来表示,16进制用0x加相应数字来表示。即:

#二进制#
>>> 0b10
2
>>> 0b11
3
>>> 0b1101
13

#八进制#
>>> 0o10
8
>>> 0o11
9
>>> 0o1101
577

#十六进制#
>>> 0x10
16
>>> 0x11
17
>>> 0x1101
4353

#十进制#
>>> 10
10
>>> 11
11
>>> 1101
1101

在python中二进制、八进制、十六进制、十进制互相转换的方法:


#其他进制转换二进制#
>>> bin(2)  #十进制转换二进制#
'0b10'
>>> bin(0o10) #八进制转换二进制#
'0b1000'
>>> bin(0xf) #十六进制转换二进制#
'0b1111'

#其他进制转换为八进制#
>>> oct(0b101)
'0o5'
>>> oct(0xf)
'0o17'
>>> oct(0o123)
'0o123'

#其他进制转换为十六进制#
>>> hex(0o10)
'0x8'
>>> hex(3)
'0x3'
>>> hex(0b111)
'0x7'

#其他进制转换为十进制#
>>> int(0o10)
8
>>> int(0xf)
15
>>> int(0b10)
2

 

二进制数和十六进制数的相互转换 c6下完美运行通过 #include #include #include #include void convert(char *input, char *output) { int len1 = strlen(input); //输入二进制数位数 int pos = len1 / 4 + 1; //输出十六进制数的位数 if (len1 % 4 == 0) { pos = pos - 1; } int j = 0; while (len1>0) { char sum = 0; for (int i=0; i0; i++, len1--) //从最后起每4位算一次值 { sum = sum + (input[len1-1]-&#39;0&#39;)*pow(2, i); } // 转换成16进制表示 sum = sum + &#39;0&#39;; if (&#39;9&#39;<sum && sum &#39;9&#39; + 6) { printf("您输入的不是正确的2进制数!\n"); exit(0); } //十六进制数放到output数组相应位置 output[--pos] = sum; } } int main() { int groupNum = 0; char total[1024] = {0}; scanf("%d", &groupNum); for (int i=1; i<=groupNum; i++) { char input[1024] = {0}; char output[256] = {0}; fflush(stdin); //记得清楚输入缓冲区,否则每次回车会影响 gets(input); convert(input, output); char format[32] = {0}; sprintf(format, "\nCase %d: ", i); strcat(total, format); strcat(total, output); } printf("%s\n", total); } 不分手de恋爱 10:52:05 /二进制数和十六进制数的相互转换 c6下完美运行通过 #include #include #include #include void convert(char *input, char *output) { int len1 = strlen(input); //输入二进制数位数 int pos = len1 / 4 + 1; //输出十六进制数的位数 if (len1 % 4 == 0) { pos = pos - 1; } int j = 0; while (len1>0) { char sum = 0; for (int i=0; i0; i++, len1--) //从最后起每4位算一次值 { sum = sum + (input[len1-1]-&#39;0&#39;)*pow(2, i); } // 转换成16进制表示 sum = sum + &#39;0&#39;; if (&#39;9&#39;<sum && sum &#39;9&#39; + 6) { printf("您输入的不是正确的2进制数!\n"); exit(0); } //十六进制数放到output数组相应位置 output[--pos] = sum; } } int main() { int groupNum = 0; char total[1024] = {0}; scanf("%d", &groupNum); for (int i=1; i<=groupNum; i++) { char input[1024] = {0}; char output[256] = {0}; fflush(stdin); //记得清楚输入缓冲区,否则每次回车会影响 gets(input); convert(input, output); char format[32] = {0}; sprintf(format, "\nCase %d: ", i); strcat(total, format); strcat(total, output); } printf("%s\n", total); }
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值