目录
一.进制及转换
2进制、8进制、10进制、16进制是数值的不同表现形式。
比如:数值13的各种进制表现形式:
13的2进制:1101
13的8进制:15
13的10进制:13
13的16进制:D
1.二进制和进制转换
平常我们最常用10进制:
10进制中满10进1
10进制的数字是由0-9的数字组成
2进制规则相同:
2进制中满2进1
2进制的数字每一位是由0-1的数字组成
因为2进制只用0和1两个数字,有很多优点,比如传输和处理时不易出错、运算规则简单,故在计算机中,数据以二进制形式储存,在此我们重点讨论2进制。
1.1 2进制转10进制
如10进制数字123表示一百二十三:
10进制的位 | 1(百位) | 2(十位) | 3(个位) | |
权重 | 10^2 | 10^1 | 10^0 | |
权重值 | 100 | 10 | 1 | |
求值 | 1*100+2*10+3*1= | 123 |
2进制的1101:
2进制的位 | 1 | 1 | 0 | 1 | |
权重 | 10^3 | 10^2 | 10^1 | 10^0 | |
权重值 | 8 | 4 | 2 | 1 | |
求值 | 1*8+1*4 +0*2+1*1= | 13 |
1.2 10进制转2进制
2 | 125 | 余数为1 | ||||||
2 | 62 | 余数为0 | ||||||
2 | 31 | 余数为1 | ||||||
2 | 15 | 余数为1 | ||||||
2 | 7 | 余数为1 | ||||||
2 | 3 | 余数为1 | ||||||
2 | 1 | 余数为1 | ||||||
0 |
从下往上依次所得的余数就是10进制的125转换出的2进制:1111101
1.3 2进制转换8进制
8进制规则:
8进制中满8进1
8进制的数字是由0-7的数字组成
0-7的数字,各自写成2进制,最多3个2进制就足够了,比如7的二进制是111,所以在2进制转化成8进制时,从右边低位往左,每3个2进制位换算一个8进制,剩余不够3个2进制位的直接换算。
如:2进制01101011,换成8进制:0153,0开头的数字会被当做8进制。
2进制 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 |
8进制 | 1 | 5 | 3 |
1.4 2进制转换成16进制
16进制规则:
16进制每一位:0 1 2 3 4 5 6 7 8 9 A B C D E F
10 11 12 13 14 15由ABCDEF替换
0-9,a-f的数字,各自写成2进制,最多4个2进制就足够了,比如f表示15,它的的二进制是1111,所以在2进制转化成16进制时,从右边低位往左,每4个2进制位换算一个16进制,剩余不够4个2进制位的直接换算。
如:2进制的01101011,换成16进制:0x6b,16进制表示的时候前面加个0x
2进制 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 |
16进制 | 6 | b |
二、原码、反码、补码
整数的2进制表示方法有三种:原码、反码、补码。
有符号整数的三种表示方法均有符号位和数值位两部分,2进制序列中,最高位的1位被当作符号位,剩余的都是数值位。
符号位:0表示”正“,1表示”负“。
如:+1101的原码:01101 -1101的原码:11101
正整数的原、反、补码都相同。
负整数的三种表示方法各不相同。
原码:直接将数值按照正负数形式转换成二进制得到的就是原码。
反码:原码的符号位不变,其他依次按位取反。
补码:反码+1得到补码。
(补码求原码可以将补码-1得到反码,再取反求原码;也可以取反,+1得到原码。)
真值 | 原码 | 反码 | 补码 |
-128 | 10000000 | ||
-127 | 11111111 | 10000000 | 10000001 |
... | ... | ... | ... |
-1 | 10000001 | 11111110 | 11111111 |
-0 | 10000000 | 11111111 | 00000000 |
+0 | 00000000 | 00000000 | 00000000 |
+1 | 00000001 | 00000001 | 00000001 |
... | ... | ... | ... |
+127 | 01111111 | 01111111 | 01111111 |
在计算机系统中, 数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理(CPU只有加法器)。
标签:10,反码,进制,16,补码,原码 From: https://blog.csdn.net/2302_77464435/article/details/140613144