| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1911 人关注过本帖
标题:负数进制转换
只看楼主 加入收藏
fangbinbin
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2011-1-29
收藏
得分:3 
以一个字节的话,负数在内存中的存储形式是以补码的,则-10就以1111 0110的形式存储,这个就是他的二进制,16进制的话,从二进制的右端开始以四位读成一位的16进制,左端不足四位补0,这样的话-10的16进制形式是f6
2011-01-29 19:05
feng_gutu
Rank: 2
来 自:汉水之滨
等 级:论坛游民
帖 子:32
专家分:31
注 册:2011-2-11
收藏
得分:0 
  8进制和16进制一般都是无符号型的,所以你只要先把10进制的负数的补码搞定,然后再按无符号型的转成8和16进制的就可以了。
  关于补码问题
   
  正数:二进制原码就是补码;   负数:绝对值的原码按位取反,然后加1就是这个负数的补码;
  
  比如-111转换成2、8、16进制:
  绝对值的原码是:0000 0000 0110 1111
            取反:1111 1111 1001 0000
            加1: 1111 1111 1001 0001(补码)
        
                  1 111 111 110 010 001
         转8进制:1  7   7   6   2   1(从最右边起,2进制的三位所表示的十进制数对应8进制的一位)
            结果:0177621
        
                  1111 1111 1001 0001
        转16进制:  F    F    9    1  (从最右边起,2进制的四位所表示的十进制数对应16进制的一位)
            结果:0xFF91

我是新手   自己的理解的   不知道能不能解楼主之惑

[ 本帖最后由 feng_gutu 于 2011-2-17 08:48 编辑 ]

缓慢而坚定
2011-02-15 04:06
孤独微积分
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2011-2-16
收藏
得分:0 
先把负数的绝对值转换二进制。然后再加一。得到便是负数的二进制,其他的就用二进制转换!如-10;10的二进制为:0000 0000 0000 1010它的补码为:1111 1111 1111 0101加一得1111 1111 1111 0110(-10的二进制)之后就自己根据二进制转换了,如十六进制:oxFFF7;
2011-02-16 21:52
快速回复:负数进制转换
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017305 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved