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

本文深入解析了C语言中负数补码的三种表示方法,包括直接计算、通过绝对值转换及特殊表示法,并回顾了有符号与无符号数的概念。适合初学者掌握补码原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                         学习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.(重点)当无符号数与有符号数混合计算时,会将有符号数转换为无符号数再进行计算,结果为无符号数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值