十进制与二进制转换问题,很急,请各位帮帮忙

wwwafa9 2010-05-07 11:11:16
负的小数的十进制数怎么转换成二进制数?

比如: -53.35转换成二进制是什么?
...全文
379 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Joe-xXx 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zanfeng 的回复:]
C# code

十进制小数转二进制小数方法
十进制小数→→→→→二进制小数 方法:“乘2取整”

对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分.
如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位,最后一次得到为最低位
如:0.25的二进制
0.25*2=0.5 取……
[/Quote]

Up 原理
至于你用原理实现自己的转换方法还是用类库提供的,由LZ自己决定
wuyq11 2010-05-07
  • 打赏
  • 举报
回复
public static int ToInt32 (
string value,
int fromBase
)
http://topic.csdn.net/u/20090203/11/d58b4651-c184-4473-9fde-d4c096b081d8.html
wwwafa9 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zanfeng 的回复:]

C# code

十进制小数转二进制小数方法
十进制小数→→→→→二进制小数 方法:“乘2取整”

对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分.
如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位,最后一次得到为最低位
如:0.25的二进制
0.25*2=0.5 取整是0
0.……
[/Quote]

从哪里抄来的?
请回答全面一点、实在一点好吗?
足球中国 2010-05-07
  • 打赏
  • 举报
回复

十进制小数转二进制小数方法
十进制小数→→→→→二进制小数 方法:“乘2取整”

对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分.
如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位,最后一次得到为最低位
如:0.25的二进制
0.25*2=0.5 取整是0
0.5*2=1.0 取整是1
即0.25的二进制为 0.01 ( 第一次所得到为最高位,最后一次得到为最低位)

0.8125的二进制

0.8125*2=1.625 取整是1

0.625*2=1.25 取整是1

0.25*2=0.5 取整是0

0.5*2=1.0 取整是1

即0.8125的二进制是0.1101(第一次所得到为最高位,最后一次得到为最低位)



十进制小数→→→→→八进制小数 方法:“乘8取整”

0.71875)10 =(0.56)8



0.71875*8=5.75 取整5

0.75*8=6.0 取整6
即0.56

十进制小数→→→→→十六进制小数方法:“乘16取整”例如:

(0.142578125)10=(0.248)16



0.142578125*16=2.28125 取整2

0.28125*16=4.5 取整4

0.5*16=8.0 取整8

即0.248



非十进制数之间的转换

(1)二进制数与八进制数之间的转换

转换方法是:以小数点为界,分别向左右每三位二进制数合成一位八进制数,或每一位八进制数展成三位二进制数,不足三位者补0。例如:

(423。45)8=(100 010 011.100 101)2

(1001001.1101)2=(001 001 001.110 100)2=(111.64)8

(2)二进制与十六进制转换

转换方法:以小数点为界,分别向左右每四位二进制合成一位十六进制数,或每一位十六进制数展成四位二进制数,不足四位者补0。例如:

(ABCD。EF)16=(1010 1011 1100 1101.1110 1111)2

(101101101001011.01101)2=(0101 1011 0100 1011.0110 1000)2=(5B4B。68)16

upzone
关注 - 0
粉丝 - 1
关注博主0 0 0
(请您对文章做出评价)
wwwafa9 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhxingway 的回复:]

对哦.
MessageBox.Show(Convert.ToString((float)-53.35, 2));

这是我收藏的,C#类型转换:
http://hi.baidu.com/wnsn/blog/item/69ec133037bc4293a8018e1c.html
[/Quote]

你试过了没有?编译时报错!
wwwafa9 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zpcoder 的回复:]
用2乘以十进制小数,将得到的整数部分取出,再用2乘余下的小数部分,然后再将积的整数部分取出,如此进行,直到积中的小数部分为0或者达到所要求的精度为止。然后把取出的整数部分按顺序排列起来,即先取出的整数部分作为二进制小数的高位,后取出的整数部分作为低位有效位。简称“乘2取整法”。
[/Quote]

整数部分怎么处理?
处理完整数部分和小数部分后怎么合并在一起?小数部分也要求补码吗?
zpcoder 2010-05-07
  • 打赏
  • 举报
回复

用2乘以十进制小数,将得到的整数部分取出,再用2乘余下的小数部分,然后再将积的整数部分取出,如此进行,直到积中的小数部分为0或者达到所要求的精度为止。然后把取出的整数部分按顺序排列起来,即先取出的整数部分作为二进制小数的高位,后取出的整数部分作为低位有效位。简称“乘2取整法”。
zhxingway 2010-05-07
  • 打赏
  • 举报
回复
对哦.
MessageBox.Show(Convert.ToString((float)-53.35, 2));

这是我收藏的,C#类型转换:
http://hi.baidu.com/wnsn/blog/item/69ec133037bc4293a8018e1c.html
zhxingway 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yezi0112 的回复:]
MessageBox.Show(Convert.ToString((int)-53.35, 2));
结果是"11111111111111111111111111001011"
[/Quote]

赞成.
wwwafa9 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yezi0112 的回复:]

MessageBox.Show(Convert.ToString((int)-53.35, 2));
结果是"11111111111111111111111111001011"
[/Quote]

小数部分抛弃了?
yezi0112 2010-05-07
  • 打赏
  • 举报
回复
MessageBox.Show(Convert.ToString((int)-53.35, 2));
结果是"11111111111111111111111111001011"
bxwmale1987 2010-05-07
  • 打赏
  • 举报
回复
赞成一楼
wwwafa9 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wo65432519 的回复:]

引用 8 楼 zanfeng 的回复:
C# code

十进制小数转二进制小数方法
十进制小数→→→→→二进制小数 方法:“乘2取整”

对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分.
如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位,最后一次得到为最低位
如:0……
[/Quote]

原理并没有讲完. 您认真看了没有?
wwwafa9 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wuyq11 的回复:]

public static int ToInt32 (
string value,
int fromBase
)
http://topic.csdn.net/u/20090203/11/d58b4651-c184-4473-9fde-d4c096b081d8.html
[/Quote]

你给的帖子看了, 但不是我要找的啊.

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧