c语言笔记
第一个程序(梦开始的地方)
#include<stdio.h>//头文件
int main()
{
printf("hello word");//打印hello word
}
//变量 一个存储数据的;
//定义变量 变量类型 变量名;
//作用域 变量的作用域在把它包含在{}里面最近的;
//生命周期 重调用时就是生命开始到结束;
//五则运算 + - * / % 前面4个和我们学的一样,后面的%是取模也叫取余;
//单目运算 ++ – 使变量加1或者减1 注:i++ 是先用后加,而++i是先加后用;
作业:查找一下**%c %s %o %x %f %p %u** //百分号什么是控制我们输出的格式
//& :取地址符 把变量的内存地址取出来
// :解地址符 把变量的内存地址里面存的东西解出来*
%c:输出字符
%s :输出字符串
%o:输出无符号以八进制表示整数
%x:输出无符号以十六进制表示的整数
%f: 输出浮点数
%p: 输出指针值
%u:十进制无符号整
进制转换
数据存储是以字节(byte)为单位
数据传输是以位(bit)为单位 //一字节等于八
小白用法欸
10进制转16,先转二进制,再隔4个转16,比如 97=0110 0001=61
10进制转8,先转二进制,再隔3个转8进制,比如97= 001=1 100=4 001=1
10进制转2,10进制除以2,
比如
97/2=48....1
48/2=24....0
24/2=12....0
12/2=6.....0
6/2=3......0
3/2=1......1一直算到1然后把最后的1也加上从后先前记110 0001。
正经的用法
10进制转16
97/16=97-(16*6)=1(这边加上16乘以的数就好,再加上1,就是61。
10进制转8
97/8=97-(8*12)=1
12/8=12-8=4 (算到比8小的就可以不用算了,加上一就好,141).
数据类型
基本数据类型
int //整型 //4字节
char //字符型 //1字节
short //短整型 //2字节
long //长整型 //4字节
float //单精度浮点数 //4字节
double //双精度浮点数 //8字节
注:以上是在32位的系统下的字节
在计算机里是用补码+1表示负数
要得到补码先取反,比如1,二进制就是0000 0001,取反1111 1110,加1,1111 1111,这就是补码;
逻辑判断
&& //逻辑与 必须2个都是真才真,否则为假
|| //逻辑或 有一个为真就是真,2个假为假
! //非 真的变假的,假的变真的 非零的数和零,真和假,不管什么数只要不是0,就是真,是零就是假
!= //不等于 不相等
== //等于 等于
位运算
& //按位与 必须2个都是1才是1,否则为0
| //按位或 有一个为1就是,就为1
~ //按位取反 ~1111 等于0000 若n为任何一个十进制的数则:“~n+n=-1” ~1+1=-2
^ //异或 相同为0,不同为1
>> /*右移 二进制向右移动,比如a=4=0100,a>>1(让a向右移动一位),然后a=2=0010 对于无符号的int和char型数据,右移时左端补零,对于有符号int和char型数据,空出来补符号位
比如-3 是先3取反1100(原码0011),然后加上1变成补码1101,这就是-3,然后正常来说位移是0110,但是它是有符号的所以要加上前面加上1,也加上1110,然后就位移成了-1(这是通俗易懂的)。
然后就是正常来说int 是4字节,每个字节8位,也就是3的源码是00000000 00000000 00000000 00000011
那取反后就是11111111 11111111 11111111 11111100,
补码是11111111 11111111 11111111 11111101
然后位移>>就是01111111 11111111 11111111 11111110,
但是要补上符号位所以就是11111111 11111111 11111111 11111111,也就是-1.
*/
<< //左移 二进制向左移动,比如a=4=0100,a<<1(让a向左移动一位),然后a=8=1000
x|=(1<<y) //将x的第y位置为1
x&=~(1<<y) //将x的第y位清零
1101>>1110