C语言培训第一天
下面是一些命令,先来谈谈今天的若干收获吧!
计算机中的一切文件都是以二进制补码的形式存在,问题也就来了。
第一个问题 如果我们给一个无符号的数赋值一个负数,他会读取到什么,又会输出什么?(似乎问题和上面的话没关系啊,嘘!往下看!)
首先来说编译器并不会报错,但是具体的内存操作就要和我们刚才说的有关系了,比如我们在存储一个负数
它会以 负数——转反码——转补码 存储到计算机中。

我们可以看上面的程序,在无符号的字符型里面我们给他赋值-1而输出是255。
为什么那?原因如下。在我们输入的-1的时候,计算机会将这个-1存储为负数的补码
也就是 源码: 1000 0001
反码:1111 1110
补码:1111 1111
特别说明:反码就是符号位不变,其他位取反。可能你会说,这还用你教,原因是作者本人当年在学源码 反码 补码的时候,生病了.
补码:是在反码的基础上加1.
好了。回到我们今天的主题。既然计算机会1111 1111 存储到计算机,那么读取的时候又是如何读取的那?
这就要注意了。我们是把一个负数存储到了无符号的变量里。计算机在输出的时候。一看要输出的变量类型是无符号类型
那么最高位计算机就会当成数据位。也就是255。
第二个问题是什么那?那就是溢出。我们知道char类型来说它的范围是-128~127
那么我们就想试试我给他个129,如何?
这次我们先来分析一下129存储到里面是什么样的。首先129是有符号的数。129是正数,正数的源码,反码,补码都是一样的。
1000 0001(源码 反码 补码)都一样哦!
好了我们把129也按补码存储到了内存,但是在读取的时候是什么样的那?读取的时候,由于是有符号的数据类型,最高位会当作符号位处理
那么最高位是1,就是代表负数。注意了,核心问题来了!
我们在读取的过程是存储过程的逆过程,我们在存储的时候 源码——》反码——》补码。在我们读取的时候 补码——》反码——》源码。(以前加1,现在减1变为反码)
当前我们最高位是1 计算机会当作负数处理,也就是在读取的时候要进行逆过程。
补码 1000 0001
反码 1000 0000
源码 1111 1111 (-127)

今天先就到这里吧!该吃饭了!
第三个问题就是涉及到了为运算 ~
具体问题就是如果我们对于一个普通变量比如 5 进行~结果会是什么?

结果为什么会是-6,我们来分析一下。
首先来说你的5是正数,那么存储到计算机中按照原反补码不不变
也就是: 0000 0101
按位取反 1111 1010
这个时候注意了:取反后你是有符号数 最高位为1表示负数,负数输出的时候要进行逆运算
也就是 补码:1111 1010
反码:1111 1001
源码:1000 0110 (-6)
结果是 -6也就一目了然了。
终上所述我们可以得到的结论就是一定要注意你的数输入后可是要进行转换的,输入的时候是原码转为补码。
读取的时候补码转为源码。而期间一切运算是在补码的基础上进行的。
【1】打开终端
1--- ctrl + ait + t //新打开一个终端
	2--- ctrl + shift + n		//在已打开终端前提下使用
	3--- ctrl + shift + t		//在已打开终端前提下使用
【2】linux @ ubuntu : ~ $
用户名     主机名        路径    命令提示符		~		//家目录	==》 /home/linux/
	/		//根目录,linux底下一切文件的起源
$		//普通用户权限
	#		//超级用户权限
【3】ls
	查看当前路径下的文件
【4】cd
	路径切换
cd		//直接切换到家目录
	cd /		//直接切换到根目录
	cd  目录名	//切换到指定目录
	cd  ..		//切换到上一级目录
	cd  -		//切换到上一次目录
【4】su
	切换用户的命令
	su root		//切换超级用户
	exit		//退出用户
【5】passwd
	sudo			//获取临时管理员权限
	sudo passwd root	//修改root用户的密码
【6】mkdir
	mkdir	目录名		//创建目录
	rmdir	目录名		//删除空目录
【7】touch
	touch 1.txt		//创建文件
【8】rm
	rm 1.txt		//删除文件
	rm 目录名 -rf		//删除目录
【9】ls
	ls -l			//以列表形式显示当前路径下文件的详细信息
	ls -a			//查看所有文件(包括隐藏文件)
d    rwx rwx r-x    8     linux  linux     4096    Mar 14 12:02  DIR   
类型    权限       链接数  用户名  组名    文件大小    时间     文件名
【10】文件类型(7种)
一切皆文件的思想(bcd-lsp)
	b		//块设备文件
	c		//字符设备文件
	d		//目录
	-		//普通文件
	l		//链接文件
	s		//套接字文件
	p		//管道文件
【11】文件权限
	rwx rwx r-x
r		//可读权限
	w		//可写权限
	x		//可执行权限
第一组:用户本身权限
	第二组:同组成员用户的权限
	第三组:没有关系的其他用户权限
【12】
	..			//上一级路径
	.			//当前路径
【13】echo
	echo “hello”	//向终端(标准输出)输出字符串
        echo “ddd0”>>3.txt >>重定向输出
【14】VIM(编辑器)
1--- vi 3.txt
	2--- 命令模式(Esc)
		yy	//复制
		dd	//剪切(删除一行)
		p	//粘贴
		u	//撤销
		ctrl+r	//反撤销
		gg	//光标移动到文件的第一行
		G	//光标移动到文件的末尾
noh noh查找高亮取消
3--- 输入模式(命令模式-->输入模式)
		i	//从光标所在位置前面开始插入资料
		a	//从光标所在位置后面开始插入资料
		I	//从光标列的第一个非空白字符开始插入资料 
		A	//从光标所在行最后面的地方开始新增资料
		o	//在光标所在列下新增一列并进入输入模式 
		O	//在光标所在列上方新增一列并进入输入模式
4--- 底行模式(Esc :)
		w	//保存
		q	//退出
		wq	//保存退出
w!	//强制保存
		q!	//强制退出
vsp 1.txt		//左右分屏显示
		sp  1.txt		//上下分屏显示
%s/hello/1234/g		//将文件所有的“hello”替换成“1234”
		7,14s/hello/HELLO/g	//将文件7-14行的“hello”替换成“HELLO”
		noh
【15】cat
cat 1.txt //将文件的内容打印到终端上
【16】cp
	cp 1.txt filename	//文件备份
	cp 1.txt dirname	//将文件复制到其他目录下
【17】mv
	mv 1.txt ..		//移动文件到上一级路径
	mv 2.txt dirname
【18】GCC
	1--- gcc 1.c		//默认生成一个二进制a.out
	     ./a.out		//执行可执行文件
2--- gcc 1.c -o hello	//指定输出一个hello的可执行文件
	     ./hello
3--- 四步完整编译流程
预处理:主要进行宏替换以及头文件的包含展开
		gcc -E Hello.c -o Hello.i
编译:编译生成汇编文件,会检查语法是否有错误
		gcc -S Hello.i -o Hello.s
汇编:将汇编文件编译生成目标文件(二进制文件)
		gcc -c Hello.s -o Hello.o
链接:链接库函数,生成可执行文件
		gcc Hello.o -o Hello
4--- 两步编译流程
汇编:将汇编文件编译生成目标文件(二进制文件)
		gcc -c Hello.c -o Hello.o
链接:链接库函数,生成可执行文件
		gcc Hello.o -o Hello
【19】数值表示方式
man ASCII //查看ASCII码表
‘0’ 'A'~'Z' 'a' 'z' ‘\n’ 空格
48 65~90 97~ 122 10 32
‘\0’(字符串的结束标志)
	  0
大小写字符相差:32
【20】代码跟踪调试
__LINE__ 		//代码所在的行数
	__FUNCTION__		//代码所在的函数
	__FILE__		//代码所在的文件
C语言培训第一天的更多相关文章
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
		2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ... 
- 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)
		从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ... 
- TODO:即将开发的第一个小程序
		TODO:即将开发的第一个小程序 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验.个人理解小程序是寄宿在微信平台上的一个前端框架,具有跨平台功能, ... 
- ExtJS 4.2 第一个程序
		本篇介绍如何创建一个ExtJS应用程序.并通过创建目录.导入文件.编写代码及分析代码等步骤来解释第一个ExtJS程序. 目录 1. 创建程序 1.1 创建目录建议 1.2 实际目录 1.3 index ... 
- 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)
		书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ... 
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点
		在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ... 
- Python爬虫小白入门(四)PhatomJS+Selenium第一篇
		一.前言 在上一篇博文中,我们的爬虫面临着一个问题,在爬取Unsplash网站的时候,由于网站是下拉刷新,并没有分页.所以不能够通过页码获取页面的url来分别发送网络请求.我也尝试了其他方式,比如下拉 ... 
- spring boot 实战:我们的第一款开源软件
		在信息爆炸时代,如何避免持续性信息过剩,使自己变得专注而不是被纷繁的信息所累?每天会看到各种各样的新闻,各种新潮的技术层出不穷,如何筛选出自己所关心的? 各位看官会想,我们是来看开源软件的,你给我扯什 ... 
- 为什么很多SaaS企业级产品都熬不过第一年
		因工作缘由,笔者与周边数位SaaS企业级应用的创始人.运营负责人有过深入接触,发现一个有趣的现象:刚起步时,蓝图远志.规划清晰,但是一路下来,却异常艰难,有些甚至熬不过第一年,就关门歇业. 2015年 ... 
随机推荐
- 动画--过渡延迟时间 transition-delay
			transition-delay属性和transition-duration属性极其类似,不同的是transition-duration是用来设置过渡动画的持续时间,而transition-delay ... 
- oracle 的索引
			一.索引分类 按逻辑分: 单列索引(Single column): 单列索引是基于单列所创建的索引 复合(多列)索引(Concatenated ): 复合索引是基于两列或者多列所创建的索引 ... 
- 夺命雷公狗ThinkPHP项目之----企业网站18之网站配置列表页的完成
			我们点击下配置列表即可查看我们列表页的配置信息了: 其实这个最简单了,首先我们先来完成他控制器的代码: public function lists(){ $mod = M('Conf')->se ... 
- PAT乙级   1024. 科学计数法 (20)
			1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ... 
- 分数的加减法——C语言初学者代码中的常见错误与瑕疵(12)
			前文链接:分数的加减法——C语言初学者代码中的常见错误与瑕疵(11) 重构 题目的修正 我抛弃了原题中“其中a, b, c, d是一个0-9的整数”这样的前提条件,因为这种限制毫无必要.只假设a, b ... 
- "服务器 '' 上的 MSDTC 不可用。"
			调试程序的时候,出现异常消息“The underlying provider failed on Open”: 详细信息:和{"服务器 '' 上的 MSDTC 不可用."}: 网上 ... 
- rqnoj-342-最不听话的机器人-dp
			dp[i][j][k][[l]: 执行第i步,执行到点(j,k),方向为l时,用的最大步数. 状态转移根据step[i]转移. #include<stdio.h> #include< ... 
- nodejs和mongodb实践
			首先,当然是都安装了nodejs 和mongodb了.这必须是前提条件. 现在我们要用nodejs连接mongodb数据库了.我这里只是一个非常非常简单是实践,初学嘛.更深入的学习之后,我会仔细写笔记 ... 
- centos 6 7更改主机名 命令添加ip
			6:vi /etc/sysconfig/network 中hostname =主机名 vi /etc/hosts 添加127.0.0.1相应的主机名 7: hostnamectl set-hostn ... 
- Linux kernel的 Makefile和Kconfig以及Make menuconfig的关系【转】
			本文转载自:http://blog.sina.com.cn/s/blog_4ba5b45e0102e6vp.html 熟悉内核的Makefile对开发设备驱动.理解内核代码结构都是非常重要的linux ... 
