在我们的生活中表达某个数的时候,比如成绩多少,这样的数都是十进制数。十进制数有10个数,0,1,2,3,4,5,6,7,8,9。十进制“逢十进一”这个大家都知道。生活中也有其它进制,比如时间的分秒数是60进制,角度是360度进制。进制的产生一定是为了更好的表达或记录。
哪在计算机里用几进制呢?二进制,相信大家都知道。因为计算机只能表示两个状态0,1,(0好比开关关,1可以表示成开关接通)。所以计算机只能“认识”二进制数。二进制“逢二进一”。
1 |
01111011 |
大家可能也知道还有八进制、十六进制,哪为什么有二进制还要其它进制?
可以想下,人类用十进制,计算机用二进制,但如果想要更好的去研究和理解计算机的运作时,光用二进制表达和描述会非常不直观、不方便。因为二进制太长了,比如一个整数(十进制),32位机中二进制有32位。如果用十六进制就只要8位,表达和描述上会方便很多,互转时也可以直接转,不像十进制哪样复杂。(因为8,16,是2的3,4次方)
1 2 3 4 5 |
int i =10? ? //十进制 int a = 0xFFFFFFFF;? ? //十六进制 int b = 017;? //八进制 |
十六进制转二进制,一位转四位,反过来是四位转一位;八进制转二进制,一位转三位,反过来是三位转一位。
写个对应表,大家也可以很容易推出这表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
二进制? ?十六进制? ??八进制 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 10 1001 9 11 1010 A 12 1011 B 13 1100 C 14 1101 D 15 1110 E 16 1111 F 17 |
如果是十进制二进制互转可以有个小方法,直接用计算机自带的计算器来做,选择程序员计算器就可以。
编程实现:整数输出十进制十六进制八进制二进制
C++中位操作类:C++bitset
注:还有就是用十六进制、八进制在编程时有时会更好设计程序,运算会更快,比如移位这类操作。