先了解一下计算机中的进制
不同进制的数据组成
二进制——由0,1组成。以0b开头;
八进制——由0,1,…7组成。以0开头;
十进制——由0,1,…9组成。整数默认是十进制的;
十六进制——由0,1,…9,a,b,c,d,e,f(大小写均可)组成,以0x开头;
进制转换:
其他进制-》十进制
位权展开法:
十进制-》十进制
54321
5 * 10000+4 * 1000+3 * 100+2 * 10+1
二进制——》十进制
100110
权:543210
位:100110
1*2^5+1*2^2+1*2^1=38
十进制—>其他进制(除方法)
有符号数的表示
在计算机内,有符号数有三种表示方法:原码、反码、补码。
有符号数据表示法: 原码、反码和补码。所有数据的运算都是采用补码进行的。最高位“0”表示正,“1”表示
原码:
例如: X=+101011 , [X]原= 00101011 X=-101011 , [X]原= 10101011
位数不够的用0补全。
PS:正数的原、反、补码都一样:0的原码跟反码都有两个,因为这里0被分为+0和-0。
反码:
反码就是在原码的基础上,符号位不变其他位按位取反(就是0变1,1变0)就可以了。(只针对负数)
补码
负数的补码是在其反码的末位加1。
PS:0的补码是唯一的,如果机器字长为8那么[0]补=00000000。
移码:
移码最简单了,不管正负数,只要将其补码的符号位取反即可。
Q3:已知某数X的原码为0b10110100,试求X的补码和反码。
10110100 补码:11001100 反码:11001011
11001011 10110101 10110100
11001100 10110100 10110011
已知某数X的补码0b11101110,试求其原码。
1110 1110 反11100001 原10011110
1110 1101 反11101100 原10010011
1001 0010 反10010001 原11101110