第一章 介绍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语言特点啥的我就不写了,反正就那些,自己随便看看就可以了。下一期写一下,新手常用的库吧,尽量写的详细一点。评论会看到的,有啥子需求意见可以评论一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值