主要内容:
1、计算机表示负数
原码表示法:最高位表示正负号,其余各位表示数值。0正,1负。
反码表示法:正数和原码的表示方法相同。对于负数,在最高位记为1,表示其为负数,在数值部分将各位取反,即0写为1,1写为0。
补码表示法:最常用的表示方法。正数的表示方法和以上两者相同。负数的表示方法是在反码表示法的基础上再加1。求负数的补码的另一种方法是:power(2,机器的位数)+这个负数。
怎样求补码?首先要知道机器的位数,然后按照原码-->反码-->补码的顺序计算。
看看在我的机器上,printf("%d\n",(-123%-2)); 是-1耶~
%,模是什么运算呢?如何处理负数呢?“在两个int做/运算的规定是向0取整的前提下,%运算的结果的符号总是和被除数一致”
“不深刻了解数据类型就不可能真正懂得C语言”
2、实现2的11到20次幂
#include<stdio.h>
#include<stdlib.h>
/*
计算a的b次方
*/
double power(int a,int b)
{
if(b==0)
{
return 1.0;
}
if(a==0)
{
return 0.0;
}
int temp=b>0?b:-b;
double result=1.0;
while(temp>0)
{
result=result*a;
temp--;
}
if (b>0)
{
return result;
}
else
{
return 1.0/result;
}
}
int main()
{
double result;
int i;
for(i=11;i<=20;i++)
{
result=power(2,i);
printf("2的%d次幂=%f\n",i,result);
}
}
结果:
3、int类型
int,等价signed int,等价signed。范围INT_MIN~INTMAX,在limits.h文件定义。存储空间4Bytes,32bit
unsigned int,存储空间和int一样,范围0~UINT_MAX,2^32,后缀U或者u
long,等价long int,等价signed long,signed long int,精度至少32bits
unsigned long,等价unsigned long int,unsigned long,位数和long相同,后缀LU
short,等价short int,signed short int,至少具有16bits
long long,至少64位
4、char 类型
ASCII码,7个bits,最多128个字符。其中96个可打印,32个控制字符。字母A编号65D,字母a编号97D,大小写相差32D。
CHAR_BIT即为char类型的长度。