进制

进制的概念

进制是什么?

对于任何一种进制—X进制,就表示每一位置上的数运算时都是逢X进一位。

二进制:0、1
八进制:0、1、2、3、4、5、6、7
十进制:0、1、2、3、4、5、6、7、8、9
十六进制:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
N进制:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、N-1

进制的运算

进制转换

十六进制与二进制转换

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
0 1 2 3 4 5 6 7 8 9 A B C D E F

二进制到十六进制转换

1 1 1 1
8 4 2 1

8+4+2+1 = 15(F)

原码反码补码

原码:

最高位是符号位,1是负数,0是正数,其他位是原值的绝对值。

反码:

反码通常是用来由原码求补码或者由补码求原码的过渡码。反码跟原码是正数时,一样;负数时,反码就是原码符号位除外,其他位按位取反。

补码:

正数时,补码和原码一样。负数时,补码是反码+1.

移码:

移码是符号位取反的补码

只存在于符号数中,不存在无符号数中

原值 1 0 0 0 0 0 0 1
原码 1 0 0 0 0 0 0 1
反码 1 1 1 1 1 1 1 0
补码 1 1 1 1 1 1 1 1
移码 0 1 1 1 1 1 1 1

逻辑运算

或运算

或:两个数二进制按位进行比对,两个数该位其中有一个或两个为1结果就为1,全部为0结果就是0

汇编语言:OR

C语言:|

值1 1 0 1 0 1 0 1 0
值2 0 1 0 0 0 1 0 1
结果 1 1 1 0 1 1 1 1

与运算

与:两个数二进制按位进行比对,两个数该位都是1结果就是1,否则就是0

汇编语言:AND

C语言:&

值1 1 0 1 0 1 0 1 0
值2 0 1 0 0 0 1 1 1
结果 0 0 0 0 0 0 1 0

异或运算

异或:两个数二进制按位进行比对,两个数该位相同就为0,不同就为1

汇编语言:XOR

C语言:^

值1 1 0 1 0 1 0 1 0
值2 0 1 0 0 0 1 1 1
结果 1 1 1 0 1 1 0 1

非运算

非:两个数二进制按位进行比对,按位取反,!1=0;!0=1;

汇编语言:NOT

C语言:!

值1 1 0 1 0 1 0 1 0
结果 0 1 0 1 0 1 0 1

左移运算

左移:右侧填零,二进制数据向左移动N位,使用符号«代表,例如:

00010000 « 1 = 00100000

原值 0 0 0 1 0 0 0 0
结果 0 0 1 0 0 0 0 0

右移运算

右移:左侧填零,二进制数据向右移动N位,使用符号»代表,例如:

00100000 » 1 = 00010000

原值 0 0 1 0 0 0 0 0
结果 0 0 0 1 0 0 0 0