原创 补码运算方法

2013-4-15 14:57 1523 25 27 分类: MCU/ 嵌入式 文集: 数电

     近期刚学数电,课前预习时书本用了个钟表的运行来讲解。看了一会儿后感觉太复杂。后来看了看例题后认为下面的方法比较就简单。

    首先,我们要知道这样一句真理(夸大了,呵呵!)“在计算机系统中,数值一律用补码表示(存储)”。并且,CPU只能进行二进制的加法运算,不能进行减法运算。

    数字从某种程度上来说,只有正数和负数两种。正数的原码和补码一样,不用进行任何变换。正数的二进制代码就是其补码。

    eg:7的二进制代码为:0000 0111.补码亦为:0000 0111。

    其实负数的也不难。负数求补码的规律为:

    负数的绝对值的原码è按位取反è加1得到补码形式。

    eg:求-7的补码。

        1、-7的绝对值为7.则7的原码为:0000 0111.

        2、按位取反。即0变1,1变0. 变为:1111 1000.

        3、加1得到补码。即 1111 1010 + 1 = 1111 1001.

        所以,-7的补码为:1111 1001.

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

潇洒哥 2013-4-15 14:57

非常感谢您的提醒!我打错了!谢了啊!

用户558726 2013-4-11 22:12

额 那个7的原码是0000 0111吧,怎么给来了个0000 0101??相信你是打错了。。
相关推荐阅读
潇洒哥 2015-07-08 16:01
位操作符的使用技巧
在C语言编程中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作。一般的位操作是用来控制硬件的,或者做数据变换使用,但是,灵活的位操作可以有效地提高程序运行的效...
潇洒哥 2015-04-04 17:39
finish shell分析之底层usart
rt_thread的finsh shell系统不愧是调试的一项利器,它可以除了完成一般shell的功能外,甚至还可以自定义命令。这个对功能单一的嵌入式系统来说是十分可贵的。在此我并不想对finsh...
潇洒哥 2015-04-01 21:29
__main() 和 main()
因为我们通常在BOOTLOADER中都已做好了比较细致的初始化工作,包括代码的搬运,所以我们最好别再调用库函数__main(),因为__main()作为ADS集成好的库函数,会对系统进行初始化设置...
潇洒哥 2015-03-26 22:54
RT-Thread学习之scons篇--解析rtconfig.py文件
rtconfig.py文件,主要用于指定编译器以及安装路径。除此之外,该文件中定义了大量的变量,这些变量包括编译选项,汇编选项,链接选项。   import os # toolchain...
潇洒哥 2015-03-26 22:53
RT-Thread学习之scons篇--SConsruct脚本文件解析
       scons的构建文件名称是统一的都称为SConstruct。其是scons所接受的编译脚本主文件。当然为了方便目录的组织,也允许在各个目录下面存放SConscript, 然后最上面S...
潇洒哥 2015-03-26 22:53
RT-Thread学习之scons篇--SConcript文件解析
SConscript文件是用来指定哪些文件会加入编译。先来分析下BSP主目录下的SConscript文件: import rtconfig Import('RTT_ROOT') fro...
我要评论
2
25
关闭 站长推荐上一条 /3 下一条