标签:
计算机中任何数据都是通过【补码】的方式来存储数据的。
二进制转十进制,这个就是1*10零次方+.........1*10的n次方
二进制转十六进制,例如:二进制 1101 1111就是十六进制的CF,怎么快速算出答案呢?每4个二进制当成一个整体就很快出答案了,同理十六进制转二进制也可以用这样的方法实现快速转化。
二进制转八进制,例如:二进制110 011就是八进制的63,每3个二进制当成一个整体就很快出答案了,同理八进制转二进制也可以用这样的方法实现快速转化。
但是注意,不存在八进制与十六进制的快速转化,都是以二进制为媒介来实现转化的。
学补码主要是搞定两个问题(以C语言中的int类型为例):
1.求负数在计算机中的二进制表示方式(也就是负数的补码)(反码+1,若是负数前面补满1若是正数前面补0,总之补满32位)
2.给你一个补码推断出其十进制是什么数字(确定正负,反码+1转为十六进制,转为十进制)
1.求C语言int类型中-5的在计算机中是以什么二进制表示的?
0101(源)
1010(反)
(28个1)1011这是补码也是计算机中-5的存储方式。
进阶:求C语言int类型中-100的十六进制是什么?
0 0 1 0 0 1 1
1 2 4 8 16 32 64
1100100
0011011
(24个1)1001 1100
0xFFFFFF9C
2.求补码(25个1)1001010代表的十进制数字。
(25个1)100 1010(源码)
(25个0)011 0101(反码)
011 0110(补码)
十六进制的36 就是十进制的54,又因为前面25位是1是个负数所以,(25个1)1001010代表的十进制数字是-54
标签:
原文地址:http://www.cnblogs.com/jewave/p/5597328.html