介绍C语言
1. 计算机所使用的数制和编码
1.1 数制
一般计算机使用的是二进制,对我们输入的非二进制进行一个转化,所以我们需要熟练掌握进制的一个转化。(常见:二进制,八进制,十进制,十六进制)
术语:数符、基数、位权
数符:指用到的数字;R进制的数符是从0~R-1。
基数:指数字的个数;如:二进制可使用0、1。
位权:是一个与数字位置有关的常数,用于计算(最终都会化为十进制)。
如:(1011.1)2=1 × 23+0 × 22+1 × 21+1 × 20+1 × 2-1
(1234)o = 1 × 83+2 × 82+3 × 81+4 × 80
二进制、八进制、十进制、十六进制的转换规则网上可自找
1.2 编码
二进制数分为无符号数和符号数。
无符号数:即二进制数的每个二进制位都用来表示大小,不需要考虑数值范围。
符号数:即二进制数的最高位表示正负,最高位为即为正、为1即为负,用二进制表示的也叫机器数。
真值:机器数所表示的实际数值。
如:-32=1001 0000 , 127=0111 1111
(真值) (机器数)
1.2.1 原码、反码、补码
正数的原反补码都是其本身。
负数:
原码:最高位表示数值的符号,其余位表示该数的绝对值。
反码:除了符号位,其他各位取反。
补码:在反码的基础上,在最低位加1.
例如:
原码:1000 1101
反码:1111 0010
补码:1111 0011
1.2.2 ASCll码
基础ASCll码有128个字符,用7位二进制编码,其最高位 置零。
字符 十进制
需要掌握的: 换行 10
回车 13
空格 32
‘0’~‘9’ 48~57
‘A’~‘Z’ 65~90
‘a’~‘z’ 97~122
2. 位运算的规则与案例
位运算:指按二进制位进行的运算。在编译器中,0b表示二进制,0o表示八进制,0x表示十六进制。一般默认是十进制,并且默认是以符号数存入内存的。
然后下面举的例子都是以八个二进制位举的例子,现在计算机有32位有64位的所以在自己电脑上运行时可能有一点出入,但是运算规则确实是这样的。
2.1 按位与
按位与运算:参加运算的两个二进制位皆为1时,结果为1,否则为0。(同真则真,一假必假)符号“&”
// a与b进行“与运算”
#include<stdio.h>
int main()
{
int a = 0b00101100, b = 0b00111010; //0b用来告诉计算机我用的是二进制数,可以换成0o、0x
printf("%d",a&b); //最终输出结果是40,无法化为二进制是因为大部分编译器没有%b以二进制输出,当然可以通过循环语句用取余法进行打印二进制的数
}
有三个人以上收藏我会追加用循环语句进行二进制输出
2.2 按位或
按位或运算:参与运算的二进制位有一个1,则为1;皆为0,则为0。(一真必真,同假则假)符号“|”(不是L是**shift+**)
// a与b进行“或运算”
#include<stdio.h>
int main()
{
int a = 0b00101100, b = 0b00111010;
printf("%d",a|b); //最终输出结果是62,无法化为二进制是因为大部分编译器没有%b以二进制输出,当然可以通过循环语句用取余法进行打印二进制的数
}
2.3按位异或
按位异或运算:参与运算的二进制位不相同时为1,相同时为0。(同假异真)符号“^”
// a与b进行“异或运算”
#include<stdio.h>
int main()
{
int a = 0b00101100, b = 0b00111010;
printf("%d",a^b); //最终输出结果是22,无法化为二进制是因为大部分编译器没有%b以二进制输出,当然可以通过循环语句用取余法进行打印二进制的数
}
2.4 按位取反
按位取反运算:若是无符号数则按位取反,即0变1,1变0;若为符号数则最高位符号位不动,其余按位取反。(符号“~”)(单目运算符:对单个目标进行运算)
2.5按位左移
按位左移运算:是将一个数二进制后左移若干位,左边最高位溢出(也就是最高位被挤掉)右边补0即可。(符号“<<”)
例如: 129<<2 被叫做129左移2位
129的二进制:1000 0001 <<2
得到:0000 0100 即 4
// a与b进行“左移运算”
#include<stdio.h>
int main()
{
int a = 129;
printf("%d",a<<2); //最终输出结果是4
}
2.6 按位右移
按位右移运算:是将一个数二进制后右移若干位,右边最低位溢出(也就是最低位被挤掉)左边补0即可(对无符号数);对符号数的话,最高位补原本符号数即叫“算术右移”,直接填0被称为“逻辑右移”。(考试中常用算术右移)
// a与b进行“右移
运算”
#include<stdio.h>
int main()
{
int a = 129; //即1000 0001
printf("%d",2>>a); //最终输出结果是32,即 0010 0000
}
3. 计算机
计算机的本质我觉得还是一个为了服务人类的工具。
3.1 什么是计算机程序
程序:控制计算机执行处理任务的指令集。
3.2 什么是计算机语言
计算机语言:用于与计算机交流并发布命令的语言。
最初的“机器语言”(由0,1组成指令,是唯一可以被计算机直接执行的语言)
到 “汇编语言”(由英文字母和数字组成指令,与机器语言相比增加了“助记符”)
最后再到“高级语言”(现代常用的计算机语言,分为“面向过程”和“面向对象”)
C语言就属于面向过程的语言。
至于C语言特点啥的我就不写了,反正就那些,自己随便看看就可以了。下一期写一下,新手常用的库吧,尽量写的详细一点。评论会看到的,有啥子需求意见可以评论一下。