-2的int型,long型,short型,signed char型存储格式是什么,-222呢?无符号的是不是就将他们绝对值后取反加

如题所述

无符号的整数和有符号的正整数都是用二进制原码来表示,而负整数则是使用补码来表示(补码的算法:负数的绝对值的原码安位取反再加一)。举个例子来说吧:
假设机器使用的是16位来存储整数。
10 的存在形式是0000000000001010
-10的存在形式:
(1) |-10| = 10 ,10原码为0000000000001010
(2)安位取反: 1111111111110101
(3)加1: 1111111111110110(最终结果)追问

在U型是补码,那要是正常的int ,char型还是要用补码吗??

追答

u是正常的
char有两种,各种系统实现的不一样

unsigned char
signed char这两种
第一种也是正常的,第二种是补码

追问

无符号还是正常的啊!!
你可能误会我的意思了 ,我的意思说比如-10,在int 型和uint里,肯定的uint是求补码吧,那int里呢

追答

-10存在变量a里面 假如
那么我们用计算机来表示a+1就等于-9
但是在计算机内存中得存储方式是取反加1

追问

那岂不是有符号和无符号的算法都是一样的了!

追答

无符号的话直接按照原来的数字存,有符号的话分正号负号..怎么会一样
比如1,他无符号和正号的方式是一样的
但是-1的话就是1111111111111111(在int是2字节的内存中)

追问

这样吧你告诉我-10的int long short signed char,unsigned int unsigned long,unsigned short,unsigned char除了存储的位数不一样外,结尾都是一样的0110是吗!~

追答

..你这不是为难我嘛......-10哪有unsigned int unsigned long,unsigned short,unsigned char啊.......
-10的int long short signed char是一样的0110

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-19
一,数据在内存中实际存放情况:数值是以补码表示的。
二,正整数的补码和该数的原码(即该数的二进制形式)相同。
负整数的补码求法(以-2的int型为例):(1)取-2的绝对值,即2;(2)2的二进制形式为10;(3)对10的二进制形式按位取反得1111111111111101(一个整数占十六位)(4)再加1得1111111111111110,就是-2的补码。
三,short整型在内存中占16为,long型在内存中占32位。它们的数值存储形式以及方法与int型一样,只是占内存数有所不同。注:在存放整数的存储单元中,最左面的一位是符号位,该位为0,表示数值为正,1表示数值为负
四,无符号的int 型 ,long型,short型,都必定要在前加unsigned,它们的最左面的一位代表数据的第一位。
五,至于char型,没有signed char这样的说法。字符存放实际上是将该字符的相应ASCII代码放到存储单元中。比如'b'的ASCII代码为十进制的98,具体整数的存储方法前面已述。
这字码得我辛苦,希望你看得懂。追问

尴尬你们说的没有的书上都有,我看的是谭浩强C语言第三版!

相似回答