1.二进制算法:
35 = 100011 (2)
具体步骤: 35 / 2 =17======= 余1
17 / 2 = 8======= 余1
08 / 2 = 4======= 余0
04 / 2 = 1======= 余0
02 / 2 = 1======= 余0
01 / 2 = 1======= 余1
35以8位长:00100011 16位长:00000000 00100011
2.两个十进制整数相加 在计算机中做二进制加法运算:
35 + 12 = 00100011 + 00001100
= 00101111
= 101111 (2)
= 47
3.一个十进制负整数,表示成二进制:“取反加一”
-15 = -1111 (2)
= - 00001111
= 11110000+1
= 11110001 二进制中,以最高位是否0 来判断是否为正数
011111110 ----------正数
10001101 ----------负数
所以: 最大正整数是 127, 即 0111 1111
最小非负数是 0, 即 00000000
绝对值最大的负整数是 -128 ,即 10000000
最接近于 0 的负整数是 -1 ,即 11111111
4.减法:二进制补码运算在计算机中没有减法。
3 - 5 = 00000011 - 00000101
= 00000011 + 00000101
= 11111110
= -00000010(2)
= -2
5.二进制乘法: 与十进制相同,各位相乘后,再相加,逢二进一
3 * 5 = 00000011 * 00000101. 011
= 00001111 * 101
= 15 ----------------
011
000
011 =1111
6.二进制除法运算:
三条法则: 0 / 0 = 0; 0/1 = 0; 1/1=1;
例: 111011 (2) / 1011(2) 高位 101。余数100
类型 | 字节数 | 位数 |
char | 1 | 8 |
signed char | 1 | 8 |
unsigned char | 1 | 8 |
short int | 2 | 16 |
int | 4 | 32 |
long int | 4 | 32 |
位操作
操作符:<< , >> , & , | , ^ , ~
1.左移操作 <<. a=12 ; a = a<<1; 000000001100 <<. 000000011000
2.右移操作>>. short int a = -2; a=a>>1 111111111110 >> 111111111111. =-1
3.位与操作: 1 & 1 = 1; 0 & 1 = 0; 1 & 0 = 0; 0 & 0=0;
int a = 12; //0000 0000 0000 1100
int b = 6; //0000 0000 0000 0110
a = a & b; //0000 0000 0000 0100 a=4
4.位或操作: 1 | 1= 1; 0 | 1 = 1; 1| 0 = 1; 0|0 = 0;
int a = 12; //0000 0000 0000 1100
int b = 6; //0000 0000 0000 0110
a = a | b; //0000 0000 0000 1110 a=14
5.位异或操作: 0 ^ 0 = 0; 1 ^ 1=0; 0 ^ 1 = 1; 1 ^ 0 = 1;
int a = 12; //0000 0000 0000 1100
int b = 6; //0000 0000 0000 0110
a = a ^ b; //0000 0000 0000 1010 a=10
6.位反操作: 0变1。 1变0
int a = 12; a = ~a; a = -13;