作为一名已经大二的学生,现在写博客真的有点晚。不过我相信,只要我一直写下去,肯定会一直一直进步的。
底下都是我复习之后查漏补缺或者是不熟悉的知识点。相对比较繁琐,复习到后面章节,内容会比较多,各部分的知识点就会看起来连贯一些。
- 十进制整数转换为 N 进制整数采用“除 N 取余,逆序排列”法。具体做法是:
将 N 作为除数,用十进制整数除以 N,可以得到一个商和余数;
保留余数,用商继续除以 N,又得到一个新的商和余数;
仍然保留余数,用商继续除以 N,还会得到一个新的商和余数;
……
如此反复进行,每次都保留余数,用商接着除以 N,直到商为 0 时为止。 - 十进制小数转换成 N 进制小数采用“乘 N 取整,顺序排列”法。具体做法是:
用 N 乘以十进制小数,可以得到一个积,这个积包含了整数部分和小数部分;
将积的整数部分取出,再用 N 乘以余下的小数部分,又得到一个新的积;
再将积的整数部分取出,继续用 N 乘以余下的小数部分;
……
如此反复进行,每次都取出整数部分,用 N 接着乘以小数部分,直到积中的小数部分为 0,或者达到所要求的精度为止。 - 字符串必须在一行内结束,不能换行。否则编译器报错。
- 赋值是指把数据放到内存的过程。
- printf 是 print format 的缩写,意思是“格式化打印”。
- %d称为格式控制符。
- C语言并没有严格规定 short、int、long 的长度,只做了宽泛的限制:
short 至少占用 2 个字节。
int 建议为一个机器字长。32 位环境下机器字长为 4 字节,64 位环境下机器字长为 8 字节。
short 的长度不能大于 int,long 的长度不能小于 int。
总结起来,它们的长度(所占字节数)关系为:
2 ≤ short ≤ int ≤ long
这就意味着,short 并不一定真的”短“,long 也并不一定真的”长“,它们有可能和 int 占用相同的字节数。 - 合法的二进制赋值
int a = 0b101; //换算成十进制为 5
//合法的八进制数赋值
int a = 015;
//合法的十六进制赋值
int a = 0X2A;
只有个别的编译器才有这种赋值方式。
-sizeof 用来获取某个数据类型或变量所占用的字节数,如果后面跟的是变量名称,那么可以省略( ),如果跟的是数据类型,就必须带上( )。
需要注意的是,sizeof 是C语言中的操作符,不是函数,所以可以不带( )。
- C语言规定,把内存的最高位作为符号位。C语言规定,在符号位中,用 0 表示正数,用 1 表示负数。
C语言允许我们这样做,如果不希望设置符号位,可以在数据类型前面加上 unsigned 关键字,例如:
unsigned short a = 12;
unsigned int b = 1002;
unsigned long c = 9892320;
这样,short、int、long 中就没有符号位了,所有的位都用来表示数值,正数的取值范围更大了。这也意味着,使用了 unsigned 后只能表示正数,不能再表示负数了。 - 不加 unsigned 的数字称为有符号数,能表示正数和负数,加了 unsigned 的数字称为无符号数,只能表示正数
- 字符处理软件在处理文本时,从左往右依次扫描每个字节:
如果遇到的字节的最高位是 0,那么就会断定该字符只占用了一个字节;
如果遇到的字节的最高位是 1,那么该字符可能占用了两个字节,也可能占用了四个字节,不能妄下断论,所以还要继续往后扫描:
如果第二个字节的高位有两个连续的 0,那么就会断定该字符占用了四个字节;
如果第二个字节的高位没有连续的 0,那么就会断定该字符占用了两个字节。 - .C语言的优势是运行效率极高,这正是底层开发所看重的。底层开发有时候就是一个模块,或者是一个服务,规模不算大,但是对效率有严格的要求,
此时用C语言就非常合适,所以针对底层开发的C语言库较多,因为它们有非常大的实用价值。 - 在计算机内存中,整数一律采用补码的形式来存储。这意味着,当读取整数时还要采用逆向的转换,也就是将补码转换为原码。
将补码转换为原码也很简单:先减去 1,再将数值位取反即可。