码迷,mamicode.com
首页 > 其他好文 > 详细

补码的两个重要问题

时间:2016-06-19 06:42:04      阅读:288      评论:0      收藏:0      [点我收藏+]

标签:

计算机中任何数据都是通过【补码】的方式来存储数据的。

技术分享

 

二进制转十进制,这个就是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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!