林粒粒老师C语言-考题篇(6-10)
本文最后更新于262 天前,其中的信息可能已经过时,如有错误请发送邮件到hfl011216@gmail.com,或点击网页底部的QQ群联系我。

6.二进制、八进制、十进制、十六进制转换

  • 二进制:以2为基数,用0和1这两个数字来表示数值,逢二进一。
  • 八进制:以8为基数,用0到7这八个数字来表示数值,逢八进一。
  • 十进制:以10为基数,用0到9这十个数字来表示数值,逢十进一。
  • 十六进制:以十六位基数。用数字0到9和字母A到F(或a到f)来表示数值,逢十六进一。其中A到F对应十进制数10到15.
  • 各进制权重,从右往左依次为,基数的0次方、1次方、2次方,以此类推。例如:对于二进制数,每个数字位置的权重,从右往左依次是,2的0次方、2的1次方、2的2次方,以此类推。
  • 二进制间的转换方法:

         二进制、八进制、十六进制转十进制:乘以对应位的权重,求和。

         例如,二进制数1010转10进制:1×2^3+0x2^2+1×2^1+0x2^0=8+0+2+1=11;

         八进制数123转十进制:1×8^2+2×8^1+3×8^0=64+16+3=83;

         十六进制数2AF5转十进制:2×16^3+A(10)x16^2+F(15)x16^1+5×16^0=10997;

  • 十进制转二进制:除2取余,逆序排列。

  • 十进制转八进制:除8取余,逆序排列。

  • 十进制转十六进制:除16取余,逆序排列。

  • 二进制转八进制:每三个二进制分为一组(从右往左分,不够三个的,在前面补0),转换位对应的八进制数。

         例如:二进制数1010101转换成八进制:

                    1010101(分组)->00 010 101(转换)->1 2 5(拼接)->125

  • 二进制转十六进制:每四个二进制分为一组(从右往左分,不够四个的,在前面补0),转换成对应的十六进制数。

         例如:二进制数10110101转换为十六进制:

                    10110101(分组)->1011 0101(转换)->B 5(拼接)->B5

  • 八进制转二进制:把每个八进制转换成三个二进制数。

         例如:八进制345转换为二进制:

                    3 4 5(转换)->011 100 101(拼接)->11100101

  • 十六进制转二进制:把每个十六进制转换成四个二进制数。

         例如:十六进制数2F转换成二进制:

                    2 F(转换)->0010 1111(拼接)->101111

  • 十进制小数转二进制小数:乘2取整,顺序排列。

         例如:十进制小数0.625转换为二进制:

                    0.625×2=1.25,整数为1,小数围殴0.25。

                    0.25×2=0.5,整数为0,小数为0.5。

                    0.5×2=1,整数位1,小数为0。(当积的小数部分为0时停止计算,

                    或当小数部分开始循环时,达到足够的精度就结束计算)对应的二           

                    进制小数:0.101。

7.原码、反码和补码

  • 原码、反码和补码是二进制整数的不同表示方式,主要用于二进制数的加减运算。
  • 原码:最高位(即最左位)是符号位,0表示正数,1表示负数;其余位表示数值大小。
  • 反码:

         正数的反码:与原码相同。

         负数的反码:在原码的基础上,符号位不变,对其余位取反。(取反就是0变1,1

                            变0)。

  • 补码:

         正数的补码:与原码相同。

         负数的补码:在反码的基础上,再加1。

         例如:用8位二进制表示+5、-5的原码、反码和补码。

                    +5的原码:00000101     -5的原码:10000101

                    +5的反码:00000101     -5的反码:11111010(符号位不变,其余取反)

                    +5的补码:00000101     -5的补码:11111011(反码基础上加1)

  • 在原码和反码中,0有+0和-0两种表示形式;补码中只有一个无符号0;
  • 二进制数的加法运算:

         列出竖式,逢2进1,若计算结果出现溢出,则从右往左保留有效位数。比如,在8

         位二进制加法中,如果计算结果超过8位,就从右往左保留8位,舍弃溢出的部分。

         例子:

8.与、或、异或、取反、左移、右移



9.变量、命名规则、书写风格

  • 变量:用来存储或引用数据,程序运行过程中其值可以改变。
  • 便来个的四个属性:变量名变量类型变量的值变量的地址
  • 变量名是由用户定义的标识符。标识符是程序中各个元素(如:变量、函数、数组等)的名字。
  • C语言标识符分为关键字预定义标识符用户标识符
  • C语言关键字如下:

  • 预定义表示符是预先定义好的具有特定用途的名字,如标准库里面的函数名。
  • 用户标识符的命名规则:

  • 变量类型决定了变量虽能存储的数据类型。
  • 变量的值是变量存储的具体数据。
  • 变量的地址是变量在内存中的位置。
  • 变量遵循“先定义、后使用”。
  • 两种定义方式:

  • 良好的书写风格不会直接影响程序的执行效率,但能提高代码的可读性可维护性可扩展性
  • C语言的书写风格:

10.int、char、float、double类

  • 由于浮点数类型的表示位数有限,float类型和double类型在存储和运算中都可能会存在舍入误差。
  • 对应int、float、double类型变量,如果赋值超出其可表示的范围,会导致数据溢出(即无法正确表示该数值)。
  • char类型在内存中占1个字节,比如说一个字母、数字或其他符号。
  • 定义一个char类型变量例子:char char_1= ‘A’;(注意用单引号包裹!)。打印一个char类型变量例子:printf(“%c”,char_1);
  • char类型实际上存储的是字符对应的整数值,字符和整数值之间的对应关系是由ASCII码定义的。
  • 标准的ASCII码总共定义了128个字符和对应整数值。比如,根据ASCII码表(如下图),大写字母F对应的整数值是70。标准版ASCII码+拓展请点击以下链接:ASCII 表 | 菜鸟工具。

  • 将ASCII码表上的十进制整数值转换为八进制或十六进制后,可以使用相应的转义符来表示对应的字符。
  • 八进制的转义符:以‘\’开头,后面跟着最多三位的八进制数,例如‘\010’;
  • 十六进制的转义符:以‘\x’开头,后面跟着16进制数,例如‘\x4b’。例如,大写字母F的ASCII码值是70,可以用’\106’(八进制表示)或’\x46’表示。
  • C语言允许对int类型变量赋予字符值,也允许对char类型变量赋整数值。在输出时,允许把cahr类型变量按整数形式输出,也允许int类型变量按字符输出。

  • 可以同时定义多个相同类型的变量,各变量名之间用逗号隔开。例如:int a, b, c;
  • 对多个变量赋初始值时,有以下几种方式:

  • 即使给多个变量赋同样的初始值,也要分别赋值,不能用等号连接。

  • 占位符:

注:文章只为自己学习,不做任何商业用途,来源为哔哩哔哩林粒粒老师的小白玩转C语言。

未完待续……

欢迎来到老汉堡🍔的博客,有任何问题请点击网页底部的QQ群联系我!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇