为什么1位8进制数可以表示3位2进制数

如题所述

在计算机数制编码中存在着,八位数按权展开,2的零次方和2的一次方和2的二次方。
也就是说每3位二进制换成1位八进制,具体原因是:2的3次方=8,同时因为 2的四次方=16,所以还有一个就是二进制转16进制的时候是每4位一换。从八进制和十六进制转换成二进制的时候也可以使用这个技巧.
举例来说,二进制101100如果要转换成八进制,每三位一换,也就是把二进制分成两组:101和100,101转换成十进制为1*2^2+0*2^1+1*2^0=5,同理100转换成十进制是4。(在这里要说明一下,在8以内十进制数和八进制是一样的,因为还没进位么,就是说十进制里的7=八进制里的7,同理八进制里的0、1、2、3、4、5、6、7也等于十进制里的0、1、2、3、4、5、6、7,所以在此每三位转换成十进制就等于转换成八进制)所以101100对应的八进制数就应该是54。再说如果是1010这种二进制数,只要补零,分成001和010两组进行转换就行了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-09
8进制就是个位最大是7
要表示8的话就要向十位进一位
变成10
同理二进制要表示十进制的2的话也要进一位
变成10
那么3位的二进制数就有2*2*2种
就是8种数字
要用八进制数表示的话
只要1位就可以了
因为八进制数的个位可以是0.1.2.3....7
正好是8个数字
正好可以全部表示。
不知你理解了吗
第2个回答  2019-06-16
例如:
字符串
printf("\007");
--
双引号间的字符串里的
\007

3位8进制数
007
printf("\x07");
--
双引号间的字符串里的
\x07

2位16进制数
0x07
\ddd
--
d=0,1,2,3,4,5,6,7
\xhh
--
h=0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
ascii
007
是响铃符,printf("\007");
printf("\x07");
可以听到
“嘀-”“嘀-”
数值写法
int
i8=
007,
ix=0x07;
//
数值不带斜杠
printf("%d
%d\n",i8,ix);
//
打印出
10进制数值
7
7
i8
=
040;
ix=0x3f;
printf("%d
%d\n",i8,ix);
//
打印出
10进制数值
32
63
第3个回答  2017-07-15
因为8等于2的三次方。
第4个回答  2017-07-15
因为2的三次方等于8.
0 = 0
1 = 1
10 = 2
11 = 3
100 = 4
101 = 5
110 = 6
111 = 7本回答被网友采纳