首页 > 编程知识 正文

c语言程序设计基础,c语言2d是什么意思

时间:2023-05-06 12:17:52 阅读:11025 作者:4400

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

一、原码、反码、补码

数字在计算机中用二进制表示。 数分为有符号的数和没有符号的数。 对于有符号的数,最高位表示符号,1为负,0为正。

源代码:一个数本身的二进制格式。

例(1) 00000001表示1

例(2) 10000001表示-1

反码:正数反码本身,负数反码不改变原始码的最高有效位(码位),其他位取反。

例(3) 0000001的反码为0000001

例(4):10000001的反码为11111110

补数:计算机中存储的是数的补数格式。 正数补数与其原码、反码相同; 负数的补数为反符号加1。

例(5) 000001补码为0000001

例(6):10000001补码为11111111

源代码和补码转换规则:

(1)正数

补码=原码=反码

)2)负数

补数=原码取反1

原码=(补数-1)取反

二. %d和%d在c语言中的差异

在c语言中,%d是有符号整数格式符号,%d是Mac系统下的无符号整数格式符号,对应于Windows系统下的%u。 Windows没有%D格式。

例(1):-3

-3的二进制代码为100000000、00000000000000000000000000000000000000000000000000001,

计算机上存储的格式(补数)为11111111、11111111、1111111、11111101

相应的无符号数为1 *2^ 311 *2^ 30……1 *2^ 21 *2^ 10 *2^0=4294967293

例(2):-27

-27的二进制资源为10000000、00000000000000000000000000000000000000000000000011,

计算机中存储的格式(补数)为11111111、11111111、11111111、11100101

相应的无符号数为1 *2^ 311 *2^ 30……1 *2^ 50 *2^ 40 *2^ 31 *2^ 20 *2^1*2^0=4294967267

例(3):-243

-243的二进制代码为10000000,000000000,000000000000000011111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111110000000

存储在计算机上的格式(补码)为111111111、11111111、1111111和00001101

相应的无符号数为1 *2^ 311 *2^ 30……0 *2^ 70 *2^ 60 *2^ 50 *2^ 41 *2^ 31 *2^ 20 *2^ 11 *2^0=4294967053

三.编程验证

现在,为了验证以上三个例子的计算结果,编写c程序。 由于本人是在Windows上创建的程序,因此程序使用%u而不是%D。

代码:

#包含

(intmain(intargc,const char * argv[] ) ) ) ) ) ) ) ) ) )。

{

int a、b、c;

a=-3;

b=-27;

c=-243;

printf (带符号a=%dt无符号a=%un ',a,a );

printf (带符号b=%dt无符号b=%un ',b,b );

printf (带符号c=%dt无符号c=%un ',c,c );

返回0;

}

执行结果:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。