在读此文之前,请先阅读《有符号整数与无符号整数》:

一、原码、反码、补码

数在计算机里是以二进制来表示的。数分为有符号数和无符号数。对于有符号数来说,最高位用来表示符号,1为负,0为正。

原码:一个数本身的二进制形式。

例(1):00000001表示1

例(2):10000001表示-1

反码:正数的反码是它本身,负数的反码是原码的最高位(符号位)不变,其他位取反。

例(3):00000001的反码是00000001

例(4):10000001的反码是11111110

补码:计算机中存储的就是数的补码形式。正数的补码和它的原码、反码相同;负数的补码是反码加1。

例(5):00000001的补码是00000001

例(6):10000001的补码是11111111

原码与补码的转化规律:

(1)正数

补码=原码=反码

(2)负数

补码=原码取反+1

原码=(补码-1)取反

二、C语言中%d与%D的区别

C语言中,%d是有符号的整型格式符,%D是Mac系统下的无符号整型格式符,相当于Windows系统下的%u。Windows下没有%D格式符。

例(1):-3

-3的二进制原码是10000000,00000000,00000000,00000011,

它在计算机中的储存形式(补码)为11111111,11111111,11111111,11111101

对应的无符号数为1 * 2^31 + 1 * 2^30 + …… + 1 * 2^2 + 1 * 2^1 + 0 * 2^0 = 4294967293

例(2):-27

-27的二进制原码是10000000,00000000,00000000,00011011,

它在计算机中的储存形式(补码)为11111111,11111111,11111111,11100101

对应的无符号数为1 * 2^31 + 1 * 2^30 + …… + 1 * 2^5 + 0 * 2^4 + 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 4294967267

例(3):-243

-243的二进制原码是10000000,00000000,00000000,11110011,

它在计算机中的储存形式(补码)为11111111,11111111,11111111,00001101

对应的无符号数为1 * 2^31 + 1 * 2^30 + …… + 0 * 2^7 + 0 * 2^6 + 0 * 2^5 + 0 * 2^4 + 1 * 2^3 + 1 * 2^2 + 0 * 2^1+ 1 * 2^0 = 4294967053

三、编程验证

现在,编写C程序来对上面三个例子的计算结果进行验证。由于本人是在Windows下编写的程序,所以程序里用%u而不是%D。

代码:

#include

int main(int argc, const char * argv[])

{

int a,b,c;

a = -3;

b = -27;

c = -243;

printf("有符号a=%d\t无符号a=%u\n", a, a);

printf("有符号b=%d\t无符号b=%u\n", b, b);

printf("有符号c=%d\t无符号c=%u\n", c, c);

return 0;

}

运行结果:

c语言编程中%d怎么运用的,C语言格式符%d与%D的区别相关推荐

  1. 数学在c语言编程中的历史,用计算机C语言编程解古代数学题

    用计算机C语言编程解古代数学题 C语言广泛的应用于基础软件.桌面系统.网络通信.音频视频.游戏娱乐等诸多领域.是世界上使用最广泛的编程语言之一本文由论文联盟http://www.LWlm.cOm收集整 ...

  2. c语言编程中精度eps是什么,c语言eps是什么意思

    在C语言中,eps指的是精度.主要用于浮点数运算中,因为C语言浮点数存储的是近似值. 计算会引起误差,所以一般计算低于某个值,就没有意义了,这个阈值就是eps,也就是精度. eps是在函数程序中事先说 ...

  3. c语言编程中野指针错误,小心C语言野指针

    指针是C语言一个很强大的功能.然而所谓成也萧何,败也萧何,用好了指针会使程序大放异彩,用错了指针轻者只是报个错,重者可能整个系统都崩溃了.本篇我们来谈谈指针一种错误的使用方法"野指针&quo ...

  4. c语言中错误executing,C语言编程中常见问题解读.doc

    C语言编程中常见问题解读 为什么vc6打开的文件却不能编译1 为什么一个vc6工程中有两个main函数不能编译成功?我想写两个程序怎么办?2 为什么v6不能编译程序,生成信息说compile和link ...

  5. 《C语言解惑》—— 第一篇 C语言编程中的对与错

    本节书摘来自华章出版社<C语言解惑>一 书中的第1章,第1.1节,作者:刘振安 刘燕君,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第一篇 C语言编程中的对 ...

  6. 请描述定时器初值的计算方式_单片机C语言编程中定时器初值计算的两种方法...

    单片机C语言编程中,定时器的初值对于初学者真的是比较不好计算,因此我总结了以下几种方法. 第1种方法: #define FOSC 11059200L //晶振的频率 #define TIMS (655 ...

  7. 关于C语言编程中include的用法

    关于C语言编程中include的用法 1 iostream与iostream.h的区别: #include <iostream.h> // 这个就是1998年标准化以后的标准头文件 #in ...

  8. c语言在数学方面的应用编程,浅谈数学在C语言编程中的应用.doc

    浅谈数学在C语言编程中的应用 浅谈数学在C语言编程中的应用 [][]C语言对学习者的数学基础要求较高对一部分学生来说学好C语言有一定的困难.本文就本专业知识和自身对C语言的学习经验对数学在C语言编程中 ...

  9. c语言编译面板上总有个0,C语言编程中常见问题.doc

    C语言编程中常见问题 为什么vc6打开的文件却不能编译1 为什么一个vc6工程中有两个main函数不能编译成功?我想写两个程序怎么办?2 为什么v6不能编译程序,生成信息说compile和link都正 ...

  10. c语言中回显,C语言编程中实现输入密码回显星号

    C语言编程中实现输入密码回显星号 众所周知,一个良好的密码输入程序是在用户输入密码时不显示密码本身,只回显星号. 或者,在安全性要求更高的某些程序中,什么都不显示.那么,在C语言中如何实现它呢? ge ...

最新文章

  1. seaborn系列 (7) | 核函数密度估计图kdeplot()
  2. 微软论文解读:用于视觉对话的多步双重注意力模型
  3. 200912阶段一C++友元、运算符重载
  4. mysql批量删除进程_小程序批量删除云数据库里的数据
  5. 一些设计上的基本常识
  6. 一行代码进行闰年的判断
  7. 计算机板卡设计仿真,电子技能训练(1-1)201492.ppt
  8. 从零开始学android:Activity初步
  9. 写个爬虫,爬图片,mzitu
  10. 串口通讯 电脑和dsp_高速DSP与PC实现串口通信的方法
  11. 互联网晚报 | 06月08日 星期三 | ​教育部回应高考试题疑泄露;​上海落户新规;字节跳动考虑出售得物少数股份...
  12. lazada数据分析采集软件,各国市场第一视角帮你分析!
  13. Android接入支付宝开发
  14. 苏州大学计算机科学考研科目,苏州大学 计算机科学与技术研究生考试科目和考研参考书目...
  15. 多思计算机组成原理实验八:简单模型机实验
  16. 后端得到Ip并解析其物理地址
  17. u盘不能拷贝超过4g的大文件吗?
  18. Flink事件时间、水印以及迟到数据处理的个人理解
  19. babylon 里面加gltf 模型
  20. airtest连接一个夜神多开器,提示“ADB指令执行失败”

热门文章

  1. 2019数码倒腾经验 斐讯T1以及9008刷机 新路由三newifi3 470矿卡
  2. [C语言]——打印素数(质数)
  3. php通过js连接打印机直接打印PDF文件
  4. MatLab2019下载
  5. Linux date对时间戳的转换
  6. DFS和BFS算法框架
  7. C语言自学之路十一(详解C语言操作符一)
  8. HihoCoder 1838 贪心
  9. 蓝牙芯片技术原理详解
  10. MATLAB数值计算函数汇总