网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月10日漏签0天
汇编吧 关注:45,331贴子:164,077
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 21回复贴,共1页
<<返回汇编吧
>0< 加载中...

周四了,大家来动动脑筋!

  • 只看楼主
  • 收藏

  • 回复
  • ZandraWoo
  • 数据结构
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
周四了,大家来动动脑筋!
Windows的计数机(也叫小算盘),是写程式时验算结果必需的工具,几乎天天在用,但它有位数的限制,比如要换算一个128bit长的十六进制到十进制..
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
不行,计数机吃不消,它的胃口只可以容纳64bit,就是上面这128bit的一半
好吧,我们自己写一个总可以吧
题目要求,输入一个128bit(最多64个F)的十六进制数,按回车后输出十进制数
连结中的程式是我草草写了的一个,大家可以下回去试试,然后想想如何实作,用什么方法都可以16/32/64BIT DOS/WIN32不妨,但请不要用API或函数库,这就失去意义了..
让脑细胞活动一下吧!


  • ZandraWoo
  • 数据结构
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
程式须在DOS下运行,WINDOWS下的DOS或DOSBOX或模拟器均可


2025-12-10 05:52:52
广告
不感兴趣
开通SVIP免广告
  • 挖土豆的二哈
  • 位运算
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
dd


  • ZandraWoo
  • 数据结构
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
题目说128BIT ,我忘了我写的程式原来可以容许256BIT
不过只要算法对,128和256只差几个关键地方而已


  • ZandraWoo
  • 数据结构
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这里有两则二进制转十进制的原理,大家可以参考一下
http://tieba.baidu.com/p/4513227595


  • ZandraWoo
  • 数据结构
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
附加一题,把原题倒过来,输入一个十进位大数,将它转作十六进制
许多dec to hex的线上转换器只能转64bit内的数,这大概受制于程式语言吧..
这个范例可以转换78位十进制到十六进制,其实更改几个变量就可以扩充到百位千位甚至万位,但长于80位就转到下一行,不好看了...

程式须在DOS下运行,WINDOWS下的DOS或DOSBOX或模拟器均可


  • JYTool
  • 文件处理
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


写起来真不容易。。


  • JYTool
  • 文件处理
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
说真的,写这个都不知道能干什么。
实际点呢,或者说学编程的初衷是赚钱。不过兴趣也是很重要的,这也是支持我写完这个小程序的动力


2025-12-10 05:46:52
广告
不感兴趣
开通SVIP免广告
  • 洛赋乁
  • 过程
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
路过水一发,不知道够不够字数~再来几个字,好了(●°u°●)」


  • ZandraWoo
  • 数据结构
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
8楼sjydhqhome写了一个win32版,可以输入8000位16进制值,写得挺不错..
我也手痒把我的dos版加到8000位,顺便验证一下彼此的正确性,
因为数值这么大,比较难知道对错...
若大家结果都相同,应该是对的吧....
8000位十六进制转成十进制大约九千多位,输出到屏幕会卷动数页,
看不到全貌,但可以输出到一个档案
hex256 > xxxx.txt
另外,还可以测试所需时间.方法很简单,写一个批次档,
利用 dos提供的time指令, 只要前后读取时间,
相减就得出程式运行时间.
批次档内容:
@echo off
time <time.dat >time.hex
call hex256.exe
time <time.dat >>time.hex
time.dat是一个只有一字节的档(建立方法大家想想吧),内容为0D, 0D即回车
time <time.dat >time.hex 的意思是运行TIME时,自动给它一个回车,
并且把TIME的输出结果送到time.hex档
call hex256.exe 是运行程序
time <time.dat >>time.hex 是把第二次时间附加到time.hex档
结果是:
运行一次输出8000个F的十六进制转成十进制,所须时间是
The current time is: 14:45:54.03
Enter the new time:
The current time is: 14:45:55.50
Enter the new time:
两次时间相减 = 1.47秒
程式没怎么做最佳化,但猜测未必能少于1秒

另外,我的DOS版和sjydhqhome的 WIN32版(同样是输入8000个F
)结果相同... 嘘...程式是对的!


  • JYTool
  • 文件处理
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

使用的GetTickCount统计的结果。858毫秒!这个是我的计算线程从开始到结束的时间,不包括响应键盘输入和显示。


  • JYTool
  • 文件处理
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

这个也是8000个数。基本上在900毫秒左右。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 21回复贴,共1页
<<返回汇编吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示