原码、反码、补码
1、机器数:
就是在计算机里面用来表示带符号的数。
1 00000001(2) 00000001
-1 -00000001(2错) 10000001
首位:用来表示数的正负,其中0代表正数,1代表负数。
2的机器数: 00000010
-2的机器数:10000010
2、真值:
除去符号位,就是真值。
00000001= +0000001=1 10000001= -0000001= -1
1机器数 -1机器数
3、原码:
原码就是机器码。
[1]原= 0000 0001 [-1]原=1000 0001
[1111 1111] 到 [0111 1111] [-127]到 [+127]
8个二进制位的取值范围[-127]到 [+127]。
1-1=1+(-1)=0000 0001 + 1000 0001 =1000 0010 =-2
4、反码:
正数:正数的反码就是其本身。
负数:负数的反码,在原码的基础上,符号位不变,其余的各个位取反(1变0,0变1)。
[1]反=[1] 原=0000 0001 [-1]反=1111 1110
1-1=1+(-1)=0000 0001+1111 1110 =1111 1111 =-127
5、补码:
正数:正数的补码就是其本身。
负数:在原码的基础上,符号位不变,其余的各个位取反,最后+1.(反码+1)
[1]补=0000 0001 [-1]补=[-1]反+1= [1111 1110]反码 + 1 =[1111 1111]补
1-1=1+(-1)=0000 0001+ 1111 1111= 0000 0000 =0. 1-1=0
总结:
1、计算机在进行减法时,都是在做加法运算。
2、正数原码、反码、补码是一样。
3、负数的反码,在原码的基础上,符号位不变,其余的各个位取反(1变0,0变1)。
4、负数的补码,就是反码+1.
注:不用太在意原码、反码、补码!!!了解就行,不懂的到时候问我。
二、逻辑运算符
与(&&)、或(||)、非(!)
与:
#include <stdio.h>
int main()
{
int num; //声明一个变量
printf("请输入一个数:
"); //打印:请输入一个数
scanf("%d", &num); //输入数字保存到变量num里
if (num > 5 && num < 10) //如果输入的数字 大于5并且小于10
{
printf("YES
"); //那么就打印 YES
}
Else //不满足的话 就打印NO
printf("NO!
");
return 0;
}
或:
#include <stdio.h>
int main()
{
int num; //声明一个变量
printf("请输入一个数:
"); //打印:请输入一个数
scanf("%d", &num); //输入数字保存到变量num里
if (num < 5 || num > 10) //如果输入的数字 小于5或者小于10 {
printf("YES
"); //那么就打印 YES
}
else //不满足的话 就打印NO
{
printf("NO!
");
}
return 0;
}
总结:
与(&&):同时满足&&运算符两边情况。如果饿了而且没有下雨,就去吃夜宵。
&& || 双目运算:这个运算符两边都要有条件。
! 单目运算:只需要一个条件(是yes 否no)。