首页 > 开发 > C++ > 正文

计算机的进制,位,与原码,反码,补码;编程必懂基础

2016-07-31 22:37:38  来源:慕课网
  1,计算机的进制,位:
1.1十进制(DEC):先从大家最熟悉的十进制说起吧,大家天天都在用。
十进制0 1 2 3 4 5 6 7 8 9 到10前(更高的位)进一位(向十位进))10 然后在个位上继续1 2 3......累加的过程,最后到了 19 又要向前进一位(百位),十位,个位又从零开始计算,往后就以此类推了;
  1.2二进制(BIN):二进制(括号中的是十进制) 0(0) 1(1) 10(2) 11(3) 100(4) 101(5) 110(6) 111(7) 1000(8) 1001(9) 1010(10) 1011(11)1100(12)满2向更高位进一位,然后其它位又从零起计(0-1); 二进制是计算机内部(cpu,内存)存储,计算数据使用的。
  1.3八进制(OCT):用0,1,2,3,4,5,6,7八个数字来计数;当满8时需向前(更高的位)进上一位;进位后个位又开始从0-7进行累加进位;
  1.4十六进制(HEX):用0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f十六个数字来计数,为什么a不用10来表示呢?因为10就向前进位了呀,而十六进制是满16才向前进位的;十六进制的计数方式与其它进制类似,到f就向前进位。十六进制是大家编程时除十进制外最常使用的一种进制。
  2,原码,反码,补码
2.1原码:用两个字节(byte,1字节=8位(bite)),16位表示的二进制整数。
如0的原码:0(或1)000 0000 0000 0000
正整数的原码(如1):0000 0000 0000 0001
负整数的原码(如-1):1000 0000 0000 0001
正整数的原码,最高位是0,负整数的原码最高位是1(计算机中最高位0表示正,1表示-),除最高位外其余各位表示这个整数的绝对值即可;
2.2反码:正整数的反码=原码
负整数的最高位不变还是1,其它位取反(0变1,1变0)就得到负整数的反码了,如-1的反码就是:
1111 1111 1111 1110
2.3补码,补码是cpu内部用来计算数据的:
正整数的补码=原码=反码;
将负整数的原码取它的反码,将它的补码加一就得到负整数的补码了。
如数-1:1000 0000 0000 0001
先取反码得:1111 1111 1111 1110
将反码加1就得到补码:1111 1111 1111 1111
最后:
1计算机内部存储的数都是二进制数的补码形式
2关于cpu:cpu寄存器的位数代表了cpu甚至系统的位数一般为32/64位,cpu寄存器中表示数(以32位(bit)的cpu寄存器为例)
如10在cpu寄存器中就表示为:
0000 0000 0000 0000 0000 0000 0000 1010 (一定要占满32个数位)
(如有错误,还请理解)
附:进制对照表