(大神分享)一张图带你理解二进制和十进制、八进制、十六进制之间的转换

转眼间今天又是五一劳动节了,作为程序员,我没有选择出去玩,出去浪,而是选择在家研(kan)究(kan)技(dian)术(ying),其实在这么一个盛大的节日里,不想出去也主要是考虑到人群的密集度,今天到处都是高并发状态,稍不留神就会被挤掉。

回想自己刚进入这一行的时候,自己当时一开始也是很菜鸟,连二进制怎么计算,怎么转换等等这些都不了解,更谈不上其他进制的计算和转换了,但是随着自己技术的积累,再回过头去理解这些知识,其实也没这么难。

我们都知道在计算机的底层都是通过二进制进行计算的,换句话说,计算机的世界是只有0和1的,所以计算机的世界很单纯的,那我们首先得知道计算机运算的基本单位是“比特”或者“位”,即 Bit。而我们内存的基本单位是字节,也是文件大小的基本计算单位,在我们计算机磁盘上存储的文件都是看到的。

java对于整数常亮的表现形式有四种:

  1. 二进制:由0和1数字组成,以0b开头表示这是一个二进制数
  2. 八进制:由0~7数字组成,以0开头表示这是一个八进制数
  3. 十进制:由0~9数字组成,不能以0开头
  4. 十六进制:以0~9和A~F这16个符号组成,以0x开头表示这是一个十六进制数

进制之间的转换

  1. 系数:这是每一位上对应的数值
  2. 基数:当前数的进制数
  3. 权:从右往左数起,从0开始,每次递增1,对应的数就是该位的权值
  4. 公式:每一位上的 (系数*基数^权) ​的累加和 如​:十进制的1234=1*10​​​​​^3+2*10^2+3*10^1+4*10^0

1

十进制到其他进制之间的转换

这个就很简单了,这个就采用以前我们数学学过的一种除法,叫做短除法,做法:除 进制 取余,直到商为0,然后将余数反转即可得到我们对应的进制数。如图:

2

结语:

好了,五一小长假就先写这么多,我知道写的再多也是自娱自乐,你们也不会认真去看,我也要出去玩耍啦,不然看你们玩得好开心我只有羡慕的份。

  • 15
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要限制用户输入为8位16进制数字,您可以创建一个自定义的 QValidator 类,并使用它来设置 QLineEdit 的输入验证器。以下是一个示例代码: ```cpp #include <QtWidgets> class HexNumberValidator : public QValidator { public: State validate(QString& input, int& pos) const override { Q_UNUSED(pos); if (input.isEmpty() || input.length() > 8) return Invalid; bool ok; input.toInt(&ok, 16); if (!ok) return Invalid; return Acceptable; } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); QLineEdit lineEdit; lineEdit.setValidator(new HexNumberValidator); lineEdit.setMaxLength(8); lineEdit.show(); return app.exec(); } ``` 这里使用了一个名为 HexNumberValidator 的自定义 QValidator 类。它会验证用户输入是否为空、长度是否超过8位,以及是否是有效的16进制数字。在验证通过后,您可以在 QLineEdit 的文本变化信号(textChanged)的槽函数中进行转换和打印: ```cpp void onTextChanged(const QString& text) { if (text.length() == 8) { QString reversed = text; std::reverse(reversed.begin(), reversed.end()); qDebug() << "Little endian: " << reversed; } } // 在 main 函数中添加以下代码: QObject::connect(&lineEdit, &QLineEdit::textChanged, &app, &onTextChanged); ``` 这样,当用户输入8位16进制数字时,会将其转换为小端,并在控制台打印出来。请注意,为了使用 qDebug 进行调试输出,您需要添加 `#include <QDebug>` 头文件。 希望这可以满足您的需求!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值