4294967295 二进制//1111 1111 1111 1111 1111 1111 1111 1111 == 2
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/06/26 00:50:23
4294967295 二进制//1111 1111 1111 1111 1111 1111 1111 1111 == 2^31 +2^30+ 2^0?
#include
int main()
{
short a=-1;
printf("%u\n",a);//short类型为什么会表示4294967295 //明明超过俩个字节!
}
#include
int main()
{
short a=-1;
printf("%u\n",a);//short类型为什么会表示4294967295 //明明超过俩个字节!
}
用补码存储的呢
-1 原码 1000 0000 0000 0000 0000 0000 0000 0001
按位求反1111 1111 1111 1111 1111 1111 1111 1110 //符号位不变
+1 1111 1111 1111 1111 1111 1111 1111 1111
所得就是补码
再问: 4294967295 二进制//1111 1111 1111 1111 1111 1111 1111 1111 == 2^31 +2^30+ 2^0?
再答: 嗯,等于
再问: 那2^32 -1 等价于 2^31 +2^30+ 2^0?
再答: 是撒,等比数列,你可以算算。
再问: 是有符号数,你用 %u 格式输出,这里做了 强制转换: (unsigned long int) a unsigned long int//是8个字节吧?8*8=64位呀!?//为啥强转为unsigned long int//而不是int呢?
再答: 我不认为是做了转换的,一个数本来就有两种形式,原码形式和补码形式。正数的原码和补码一样的。如果是进行减法运算就用数的补码进行运算,输出时默认是输出原码形式,%u只是告诉编译器这儿要输出补码形式,显然原码和补码二进制位相等。 我是说没记错嘛,unsigned long int、unsigned int、long int、int在32位系统下都是4个字节,刚刚测试了的,64位系统下貌似是你说的那样的。
再问: short类型为什么会表示4294967295 ?//明明超过俩个字节! 输出时默认是输出原码形式,%u只是告诉编译器这儿要输出补码形式//%u不算输出的吗?为啥又用补码形式? 显然原码和补码二进制位相等//啥用处?
再答: 1.额,%u标示打印unsigned int http://en.wikipedia.org/wiki/Printf_format_string上面说了的,所以虽然a是short型的,也是打印unsigned int 2.上面的补码形式是我的理解,因为-1是负数,现在%u又要输出一个正数,只有输出等价的补码形式了,补码是正的。 3.答案1应该是把所有的问题都解决了吧
-1 原码 1000 0000 0000 0000 0000 0000 0000 0001
按位求反1111 1111 1111 1111 1111 1111 1111 1110 //符号位不变
+1 1111 1111 1111 1111 1111 1111 1111 1111
所得就是补码
再问: 4294967295 二进制//1111 1111 1111 1111 1111 1111 1111 1111 == 2^31 +2^30+ 2^0?
再答: 嗯,等于
再问: 那2^32 -1 等价于 2^31 +2^30+ 2^0?
再答: 是撒,等比数列,你可以算算。
再问: 是有符号数,你用 %u 格式输出,这里做了 强制转换: (unsigned long int) a unsigned long int//是8个字节吧?8*8=64位呀!?//为啥强转为unsigned long int//而不是int呢?
再答: 我不认为是做了转换的,一个数本来就有两种形式,原码形式和补码形式。正数的原码和补码一样的。如果是进行减法运算就用数的补码进行运算,输出时默认是输出原码形式,%u只是告诉编译器这儿要输出补码形式,显然原码和补码二进制位相等。 我是说没记错嘛,unsigned long int、unsigned int、long int、int在32位系统下都是4个字节,刚刚测试了的,64位系统下貌似是你说的那样的。
再问: short类型为什么会表示4294967295 ?//明明超过俩个字节! 输出时默认是输出原码形式,%u只是告诉编译器这儿要输出补码形式//%u不算输出的吗?为啥又用补码形式? 显然原码和补码二进制位相等//啥用处?
再答: 1.额,%u标示打印unsigned int http://en.wikipedia.org/wiki/Printf_format_string上面说了的,所以虽然a是short型的,也是打印unsigned int 2.上面的补码形式是我的理解,因为-1是负数,现在%u又要输出一个正数,只有输出等价的补码形式了,补码是正的。 3.答案1应该是把所有的问题都解决了吧
二进制1111,1111的含义?
4294967295 二进制//1111 1111 1111 1111 1111 1111 1111 1111 == 2
二进制数1111×11等于
(1111)2乘以(111)2的竖式?二进制!
二进制计算1000 0101 + 1100 1110 =0101 0011 + 0111 1111 =1000 0001
将二进制数(1111)2转换为十进制数为
补码的二进制数真值怎么求,例如(1111 1111 1111 1111)
二进制1111 1111 1111 0000 怎么快速的转化成十进制
二进制加减法问题二进制真值为-000,则原码为1000,反码为1111,补码为0000,我想问的是书上说补码等于原码除去
二进制的负数如何算?二进制的负数都用补码算,那如何根据补码看出值呢如1111 1011 如何看出其值为-5
1010-1111二进制具体思路是怎样的了?补码是怎么理解的?
二进制数相加问题1111与1001相加后是多少呢?