学习C语言进阶剖析课程日记(一)

                         学习C语言进阶剖析课程日记(一)

今天搞清楚了一个问题,关于如何使用原码,反码和补码。打通了数电课程和C语言课程中,关于负数的补码的认识。下面用三种不同的方法,写出-7的补码。

例如 char -7 ,应该如何用补码来表示?

一、在数电课程中, 可以直接写出 1001。(因为 -8 +1 = -7)由于这个是8位,因此前面加1111.所以 -7的补码为 1111 1001

二、而在C语言课程中,负数的补码为 负数的绝对值的反码+1。
说人话,就是 先取-7的绝对值,得到+7;然后写出+7的原码 111,因为是8位,所以进行补0,得到0000 0111。再进行取反,得到 1111 1000,+1至最低位,得到 1111 1001。 (和上面的结果相同)

三、假如这样表示呢? -7 = - 111。由于是负数,因此对最高位添1。得到 1 0111 。因为是8位 得到 0001 0111,再对其求反,得到1111 1000,最后+1,得到 1111 0001。(tips:在取反的过程中,不能对符号位进行取反)

综上:用方法二,思路最为清晰。先求绝对值的原码,再求反码,最后直接+1,简洁明了。

最后,贴一下有符号和无符号数的知识,复习一下。

  1. 数据类型的最高位勇于标识数据的符号
    (1)最高位为1,表明这个数为负数(1)最高位为1,表明这个数为负数
    (2)最高位为0,表明这个数为正数

  2. 在计算机的内部用原码表示无符号数
    (1)无符号数默认为正数
    (2)无符号数没有符号位

  3. C语言中只有整数类型能够声明unsigned变量

4.(重点)当无符号数与有符号数混合计算时,会将有符号数转换为无符号数再进行计算,结果为无符号数。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页