注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

0与1构筑世界,程序员创造时代

软件架构设计 Java编程

 
 
 

日志

 
 

C学习笔记 - 原码、反码、补码 | C Language study note - Binary,inverse and complement code  

2012-07-19 23:02:40|  分类: C/C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在Java、PHP中,基本不需要考虑原码、反码、补码、有符号数、无符号数这些问题,但现在学习C,发现这些东西时时刻刻需要用到。再来温习一下这些最基础的知识。

环境 | Enviroment

操作系统:RedHat 5.7 64bit
GCC: 4.1.2

基础知识 | Basis

注:以下是以32位整数为例进行说明。

位:
计算机的最小度量单位,也称比特(bit)。
字节:由8个二进制位组成。
原码
- 一个数本身的二进制形式。
反码 - 正数的反码与原码相同,负数的反码是将除符号位外的其余位求反
补码 - 正数的补码与原码相同,负数的补码是将除符号位外的其余位求反,再加1
例:
十进制数 8,其原码是 0000 0000 0000 0000 0000 0000 0000 1000
                     其反码是 0000 0000 0000 0000 0000 0000 0000 1000
                    
其补码是 0000 0000 0000 0000 0000 0000 0000 1000
十进制数 -8,其原码是 1000 0000 0000 0000 0000 0000 0000 1000
                       其反码是 1111 1111 1111 1111 1111 1111 1111 0111
                       其补码是 1111 1111 1111 1111 1111 1111 1111 1000

实战 | Practice

1、那么8 + (-8),其运算过程是怎样的呢?
首先,要弄清楚一点:在计算机中,数值一律用补码来表示。 原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
  8 的补码 0000 0000 0000 0000 0000 0000 0000 1000
-8 的补码 1111 1111 1111 1111 1111 1111 1111 1000
--------------------------------------------------------
相加结果  
0000 0000 0000 0000 0000 0000 0000 0000   (符号位有进位,被舍弃)

2、+0 (正零)、-0(负零)用原码和补码如何表示?
+0 原码:0000 0000 0000 0000 0000 0000 0000 0000
+0 反码:0000 0000 0000 0000 0000 0000 0000 0000
+0 补码:0000 0000 0000 0000 0000 0000 0000 0000

-0 原码:
1000 0000 0000 0000 0000 0000 0000 0000
-0 反码:1111 1111 1111 1111 1111 1111 1111 1111
-0 补码:0000 0000 0000 0000 0000 0000 0000 0000  (反码加1后,符号位有进位,被舍弃)

C学习笔记 - 原码、反码、补码 | C Language study note - Binary,inverse and complement code - 傲风 - 宝剑锋从磨砺出 梅花香自苦寒来注:正、负零的补码是一样的

<正文结束>

文章声明


作者:傲风(aofengblog@163.com)       编写时间:2012年07月18日

网址:http://aofengblog.blog.163.com

作者保留所有权利,转载请保留文章全部内容!

  评论这张
 
阅读(771)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017