-
2021-06-28 09:00:49
人们通常用十六进制而不是二进制写计算机,因为十六进制写比二进制写更方便。数学上,十六进制是每一个十六进制的进位制,一般用数字0 ~ 9和字母A~F表示,其中“A ~ F”表示“10~15”,称为十六进制数。
推荐:“编程视频”
人们通常用十六进制而不是二进制来写计算机,因为用十六进制比二进制更方便。
十六进制(缩写为十六进制或下标16)是数学中每个十六进制1的进位制。一般用数字0-9和字母a-f(或a-f)表示,其中a-f表示10-15,称为十六进制数。
示例:
例如,十进制数57用二进制111001和十六进制39写成。历史上,中国使用十六进制的重量单位,例如,它规定16两是一公斤。如今,十六进制在计算机领域得到了广泛的应用,因为将4位转换成一个十六进制数并不难。1字节可以表示为2个连续的十六进制数字。然而,这种混合表示令人困惑,因此它需要一些前缀、后缀或下标来显示。
二进制是指数学和数字电路中以2为基础的记数系统,也就是说该系统是二进制的。在这个系统中,[1]通常由两个不同的符号表示:0(表示零)和1(表示一)。在数字电子电路中,逻辑门的实现直接使用二进制,所以现代计算机和计算机相关设备使用二进制。每个数字被称为一位(二进制数字的缩写)。这就是为什么人们通常用十六进制而不是二进制来写计算机。更多
更多相关内容 -
在MATLAB中实现十进制和十六进制数的转化方法
2020-12-24 04:37:43在MATLAB中算出了一个十进制的...转换规则:对N位二进制表示的有符号十进制数,其数值范围为-2^(N-1)~2^(N-1)-1,对正数n,对应十六进制数为dec2hex(n);对负数n,对应十六进制数为dec2hex(2^(N+1)+n)。例:a=[-1 ...在MATLAB中算出了一个十进制的数组(有几百个单元),如何把这些十进制的书转化为16进制呢?
如果是正数直接使用dec2hex函数。如果是负数,将其转换为反码再用dec2hex。
转换规则:对N位二进制表示的有符号十进制数,其数值范围为-2^(N-1)~2^(N-1)-1,对正数n,对应十六进制数为dec2hex(n);对负数n,对应十六进制数为dec2hex(2^(N+1)+n)。
例:a=[-1 10 17 -10 9],需转换为一个字节的十六进制表达。
需将其中的负数转换为相应的反码,n = n + 256
使用 a(find(a<0))=a(find(a<0))+256
得到
a =
255 10 17 246 9
再用
dec2hex(a)
得到
ans =
FF
0A
11
F6
09
%%%%%%16进制转10进制 转化方法一%%%%%%%%%%%%
a=textread('c:\a.txt','%s')';%以字符形式打开文件
alpha=hex2dec(a)'; %16进制转化为10进制数,存入alpha矩阵
%%%%%%%16进制转10进制 转化方法二%%%%%%%%%%%
[wenjian_ming,lujing_ming] = uigetfile('c:\a.txt','导入数据');
fid=fopen(strcat(lujing_ming,wenjian_ming),'r');
data=[];
while ~feof(fid)
m=fscanf(fid,'%3x',[1 inf]);
data=[data;m]; %将读出的数据存入data矩阵中
end
alpha=data;
%%%%%%%保存文件方法一%%%%%%%%%%%%%%
dlmwrite('c:\b.txt',alpha,'delimiter', ' ') %将得出数据存入新的b.txt文档
%%%%%%%保存文件方法二%%%%%%%%%%%%%%
fid=fopen('c:\d.txt','w');
fprintf(fid,'%d ',alpha');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
alpha2=alpha(1:2:length(alpha)-mod(length(alpha)+1,2)); %将奇数元素提取出来
dlmwrite('c:\c.txt',alpha2,'delimiter', ' ') %将得出数据存入新的c.txt文档
%%%%%%%画图%%%%%%%%%%%%%%
plot(1:length(alpha2),alpha2) %画图
-
c语言(编程题:十六进制数转换为十进制)
2021-11-14 13:52:17写一个函数,输入一个十六进制数,输出相应的十进制数。 基础知识 1. 十六进制定义 -------16进制即逢16进1,每一位上可以是从小到大为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共16个大小不同的数。16进制...C语言
题目
写一个函数,输入一个十六进制数,输出相应的十进制数。
基础知识
1. 十六进制定义
-------16进制即逢16进1,每一位上可以是从小到大为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共16个大小不同的数。16进制转换即16进制与其他不同进制之间的换算转换,常见如2进制、8进制、10进制等进制。
且16进制的标准表示一般为0x后跟数字2. 十六进制转换:
-------十六进制转换有16进制每一位上可以是从小到大为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F16个大小不同的数,即逢16进1,其中用A,B,C,D,E,F(字母不区分大小写)这六个字母来分别表示10,11,12,13,14,15。
3. 各种进制对照表:
分析题目
- 首先明白16进制如何通过计算转换为10进制。
--------16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
- 举例: 将0x2AF5换算成10进制
5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997
编程解决
将问题分析过后我们知道了两种进制转换的原理,也会进行进制转换的计算,现在我们需要把这些数学思想转换为编程语言。
并且在进制转换的编程中有许多小问题一下将会做出详解。1.先定义编写函数的名称:
int Get_0x(const char* str)//将函数命名为Get_0x 并且形参为不可修改的字符串
2.进制转换函数用到的头文件:
#include <stdio.h>//标准库函数 #include <ctype.h>//特殊字符判断的头文件 #include <string.h>//字符串操作用到的头文件 #include <limits.h>//检测整型数据类型的表达式范围
3.如果遇到空格的处理:
while (isspace(*str)) { str++;//因为空格在转换过程中对数值没有影响,直接++后移进行后续操作 }
4.正负号的判断及解决方法:
int index = 1; if (*str == '-' || *str == '+') { if (*str == '-') { index *= -1; } else { index = 1; } str++; }
5.判断前两位是否是0X 16进制的表达形式:
if ((*str == '0') && (*(str + 1) == 'x' || *(str + 1) == 'X')) //判断前两位是否是0X 16进制的表达形式 { str += 2; //如果是从第三位开始换算计算 } else { return INT_MAX; }
6.判断是否是字符:
while (isxdigit(*str)) //判断是否是字符 { if (isdigit(*str)) //如果是字符按位进行操作 这部分就是将数学思想转变为编程语言 { sum = sum * 16 + (*str - '0'); } else if (islower(*str)) { sum = sum * 16 + (*str - 'a' + 10); } else { sum = sum * 16 + (*str - 'A' + 10); } str++; }
7.结束标志:
if (*str == '\0') return sum * index; return INT_MAX;
上述就是进制转换各部分的代码及其实现的功能。
全部代码
#include <stdio.h> #include <ctype.h> #include <string.h> #include <limits.h> int Get_0x(const char* str) { int sum = 0; while (isspace(*str)) { str++; } //此时 空格处理结束 int index = 1; if (*str == '-' || *str == '+') { if (*str == '-') { index *= -1; } else { index = 1; } str++; } if ((*str == '0') && (*(str + 1) == 'x' || *(str + 1) == 'X')) //判断前两位是否是0X 16进制的表达形式 { str += 2; //如果是从第三位开始换算计算 } else { return INT_MAX; } while (isxdigit(*str)) //判断是否是字符 { if (isdigit(*str)) { sum = sum * 16 + (*str - '0'); } else if (islower(*str)) { sum = sum * 16 + (*str - 'a' + 10); } else { sum = sum * 16 + (*str - 'A' + 10); } str++; } if (*str == '\0') return sum * index; return INT_MAX; } int main() { printf("%d\n", Get_0x("0x123ABcW")); printf("%d\n", Get_0x("0X123ABc")); printf("%d\n", Get_0x(" 0x123ABc"));//对空格判断 printf("%d\n", Get_0x("+0x123ABc"));//+判断 printf("%d\n", Get_0x("-0x123ABc"));//-判断 printf("%d\n", Get_0x(" +0x123ABc"));//+和空格判断 printf("%d\n", Get_0x(" -0x123ABc"));//-和空格判断 printf("%d\n", Get_0x("0x2AF5"));//对上述举例进行验证 }
验证结果
(小白一位,如有问题,欢迎各位大佬指正)
-
超级好用的C++十六进制、十进制字符串转十进制数字
2019-12-25 19:59:24引言 在撸代码的过程中,难免会遇到字符串转数字,今天在这里给大家分享三种字符串转数字的方法。 1、stringstream stringstream在头文件<...stringstream能完成十六进制和十进制的字符串的转换...引言
在撸代码的过程中,难免会遇到字符串转数字,今天在这里给大家分享三种字符串转数字的方法。
1、stringstream
stringstream在头文件<sstream>中定义,是C++的字符串流,当要字符串转数字时,先把字符串输出到字符串流,再把字符串流输入到数字中(int或其他类型)。stringstream能完成十六进制和十进制的字符串的转换,只要在输出时选用十进制(默认)或是十六进制时即可。
测试代码
#include <iostream> #include <string> #include <sstream> using namespace std; int main() { string str1("1024"); stringstream ss1; int d1; ss1 << str1; ss1 >> d1; cout << d1 << endl; stringstream ss2; int d2; string str2("1aF"); //1aF十进制431 ss2 << hex << str2; //选用十六进制输出 ss2 >> d2; cout << d2 << endl; system("pause"); return 0; }
测试结果
注意事项
在做字符串转数字时要注意转换的字符串是否超出了你选用的数据类型的最大值,比如在做"12345678999"转数字时,转换过来的数据类型就不能选用int型,应选用long long型,因为"12345678999"已超出了int所能表达的最大值2147483647。例如下面的代码。
#include <iostream> #include <string> #include <sstream> using namespace std; int main() { string str1("12345678999"); stringstream ss1; int d1; ss1 << str1; ss1 >> d1; cout << d1 << endl; stringstream ss2; long long d2; ss2 << str1; ss2 >> d2; cout << d2 << endl; system("pause"); return 0; }
测试结果
2、stoi
stoi定义于头文件<string>中,是C++11标准中新加入的,所以要顺利使用stoi你的编译器必须支持C++11。我们先看stoi在<string>中的定义。
int stoi( const std::string& str, std::size_t* pos = 0, int base = 10 ); int stoi( const std::wstring& str, std::size_t* pos = 0, int base = 10 );
第一个参数指定你要转换的字符串,第三个参数指定你要转换的字符串是什么进制的,默认为十进制,第二个参数默认为0,当转换成功时返回int型。类似于stoi转换字符串的函数还有stol、stoul、stoll、stoull、stof、stod、stold,它们的区别只在于转换的字符串类型和返回类型不一样,有兴趣的可以自行了解。
测试代码
#include <iostream> #include <string> using namespace std; int main() { string str1("1024"); string str2("1aF"); int d1, d2; d1 = stoi(str1); d2 = stoi(str2, 0, 16); //转换的源字符串为十六进制,必须指定第三个参数为16 cout << "stoi(str1): " << d1 << endl; cout << "stoi(str2, 0, 16):" << d2 << endl; system("pause"); return 0; }
测试结果
注意事项
在使用stoi的时候要注意传入的参数是否有效且转换的结果是否溢出,与stringstream不同,若发生上述错误,stoi直接返回错误代码,程序直接结束运行。所以在使用stoi的时候最好加上异常处理,例如下面的代码。
#include <iostream> #include <string> using namespace std; int main() { int d1; try { d1 = stoi("h5hk"); cout << d1 << endl; } catch (out_of_range &) { cout << "Out of range." << endl; } catch (invalid_argument &) { cout << "Invalid_argument." << endl; } catch (...) { cout << "something else wrong." << endl; } int d2; try { d2 = stoi("ffffffffff", 0, 16); cout << d2 << endl; } catch (out_of_range &) { cout << "Out of range." << endl; } catch (invalid_argument &) { cout << "Invalid_argument." << endl; } catch (...) { cout << "something else wrong." << endl; } //若转换的数字太大,可以选用处理范围更大的函数,如stoll long long d3; try { d3 = stoll("ffffffffff", 0, 16);//stoll的返回值为long long型 cout << d3 << endl; } catch (out_of_range &) { cout << "Out of range." << endl; } catch (invalid_argument &) { cout << "Invalid_argument." << endl; } catch (...) { cout << "something else wrong." << endl; } system("pause"); return 0; }
测试结果
3、自己写
如果实在是“看不上”其它方法,那就自己写一个字符串转数字的方法。下面的代码把十六进制字符串转换成int型数字,稍加修改可以转十进制字符串。
#include <iostream> #include <string> #include <cmath> using namespace std; //十六进制字符转十进制字符 int hextoDec(char c) { int ans; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': ans = c - '0'; break; case 'a': case 'A': ans = 10; break; case 'b': case 'B': ans = 11; break; case 'c': case 'C': ans = 12; break; case 'd': case 'D': ans = 13; break; case 'e': case 'E': ans = 14; break; case 'f': case 'F': ans = 15; break; } return ans; } //字符串str转int型数字 int stringtoInt(string str) { int ans = 0; for (int i = str.size() - 1, j = 0; i >= 0; i--, j++) //从低位到高位依次转化 ans += hextoDec(str[i]) * pow(16, j); //pow(x, y)返回x^y return ans; } int main() { int d = stringtoInt("1aF"); cout << "stringtoInt(\"1aF\"): " << d << endl; system("pause"); return 0; }
测试结果
-
二进制、八进制、十进制、十六进制关系及转换
2019-02-21 21:20:22二进制,八进制,十进制,十六进制之间的关系是什么?浮点数是什么回事? 本文内容参考自王达老师的《深入理解计算机网络》一书&amp;amp;amp;amp;amp;amp;amp;amp;lt;中国水利水电出版社&amp;amp;amp... -
二进制、八进制、十进制与十六进制,最全,没有之一
2017-07-20 15:20:20在计算机语言中常用的进制有二进制、八进制、十进制和十六进制,十进制是最主要的表达形式。 对于进制,有两个基本的概念:基数和运算规则。 基数:基数是指一种进制中组成的基本数字,也就是不能再进行... -
十六进制表示浮点数
2020-09-09 15:57:34第三章 java的基本程序设计结构笔记记录下学习中存在的问题十六进制表示浮点数二进制表示浮点数功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合... -
C/C++知识点之怎样理解八进制和十六进制
2021-01-12 17:34:39本文主要向大家介绍了C/C++知识点之怎样理解八进制和十六进制,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。C语言中8进制和16进制怎么表示C语言...八进制数的表达方法C/C++规定,一个数如果要指... -
C语言操作符 详解及二进制,八进制,十进制,十六进制的转换
2022-05-14 13:32:06最全操作符详解即二进制,八进制,十进制,十六进制代码转换 -
浅谈八进制转义字符和十六进制转义字符
2018-12-27 19:31:53表示ACSII码值等于该十六进制数的字符,最短一位\xh,最长两位\xhh,超出部分同样不算,十六进制的标准前缀0x或0X不用再额外加上,h的数值为0~9,a~f; 那么\xhh 的范围就是\x00~\x7f 举个栗子 '\x41',十进制为... -
Matlab 十进制负数转换十六进制,简单实用
2020-12-08 22:19:08需要对一个数字矩阵进行一个数据的归一化,把十进制数最终转化成3个比特的十六进制,也就是24位的数。 直接用 函数 dec2hex() 因为有负数和小数的存在,需要额外的处理,小数还比较好解决,根据设计,直接四舍五入... -
浮点数的十六进制表示IEEE 754
2019-11-01 18:20:188bit的二进制数据存储范围为-127~128,故 存储的指数位=指数的真值+127 ,来 避免符号位的再次出现。 对于数据,首先需进行化简,均应化为1.0+小数部分或-1.0+小数部分的形式( 此时系统会默认忽略整数位的1,而只... -
Python 正则表达式验证十六进制为特定范围
2014-09-05 10:45:071. 1 to C (1 to 12: hour or month) ^[1-9a-cA-c]$ 2. 1 to 18 (1 to 24: hour) ^(1[0-8]|[1-9a-fA-F])$ 3. 1 to 1F (1 to 31: day of the month) ^(1[0-9a-fA-F]|[1-9a-fA-F])$ 4. 1 to 35 (1 to 53: week of t -
『double转八字节十六进制』double占8字节 一个数字占1字节 为什么能精确16位 我觉得只有8位,,,
2021-05-19 08:36:56C# 的double类型的10进制 转化成 字符串的 2进制和16进制的问题先转换成字组,然后再转成2进制和16进制格字符串XSf道家风水传承网doublex=3.14d;XSf道家风水传承网XSf道家风水传承网//先转换为字节数组XSf道家风水... -
关于二、八、十、十六进制以及原码反码补码知识点详解
2021-04-10 23:44:23关于二、八、十、十六进制以及原码反码补码知识点详解 二进制: 只有0和1表示一个数值的大小 存在逢2进1的特点 二进制数的书写通常在数的右下方注上基数2,或在后面加B表示 如(0100 1000)B 或者 (0100 1000)2 ... -
Java基础之进制转换:十六进制、byte数组、十进制
2021-07-02 14:09:19十六进制(Hex) 、 字节(Byte)、比特(bit) 十六进制(Hex):计算机中数据的一种表示方法,它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-15。 官方语言以0x开始的数据表示... -
int 类型数据的最大值,最小值及其十六进制表示方式
2019-09-28 11:57:26要想知道其他数据类型的存储大小,最大值,最小值,可以看菜鸟教程--C++数据类型 即在int类型中: 正整数的最大值为 0x7fffffff 也就是十进制的 2147483647 正整数的最小值为 0x00000001 也就是十进制的 1 0表示为... -
Python的字符编码,二进制、八进制、十进制、十六进制和emoji
2020-03-21 21:07:43本文对Python的编码知识做了更深入一些的研究,将字符编码以及不同进制的关系梳理一下,最后也谈到了emoji的输出问题。 -
单精度浮点数转换成十六进制
2014-09-09 15:15:23编程中时刻要记得float在计算机中也是按照整数存储的,下面是我写的一个关于float转换的程序,因为开发工作中用到 在输入框中输入浮点数,然后转换成十六进制的命令发送到下位机中。比如0.01 转换成 3C 23 D7 0A ... -
MFC串口通信编程之字符串发送十六进制发送
2019-02-27 17:12:20//读取编辑框内容m_strDataTX//发送的字符串上表面为十六进制格式 CString m_strCtrlLightBL; m_strCtrlLightBL="55AA0AAA6B4310100000";//"55aa0aaa6b4310100000" CDataTypeConverter DTC; COleVariant m_... -
位、字节、字、字长 | 二进制、十进制、八进制和十六进制的相互转换 | 原码、反码、补码
2020-04-20 23:38:30位(bit):表示二进制位,位时计算机内部数据存储的最小单位,只有两种状态”0“,”1“ 字节(Byte):字节是计算机中数据处理的基本单位,计算机以字节为单位存储和解释信息,并规定一个字节有八个二进制构成。... -
精简汇编语言笔记(一) ——二进制、十六进制及数据宽度
2020-01-08 16:24:18机器语言是计算机能直接识别的二进制代码,由机器指令集构成,能够直接被机器执行,不需要编译。是最低级的编程语言。目前机器语言使用很弱,除了机器生产厂家几乎不应用于其他。 二、汇编语言 汇编语言是由一百多... -
【译】CSS 十六进制颜色揭秘
2017-10-16 13:55:00本文讲的是【译】CSS 十六进制颜色揭秘, 原文地址:CSS Hex Colors Demystified 原文作者:Dave Gash 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:Cherry 校对者:薛定谔的猫、... -
QT中将lineEdit的输入限制为16进制数字(以16进制为例)
2020-11-03 19:11:10{}/*跟在[]后,表示正则限制,例如[0-9]{4},则只能输入4位数字,[0-9]{2,9}, 则能输入2位到9位数字,如果你想输入一个可以转换成double的数字,可以表示为*/ [0-9]{1,}[.]{1}[0-9]{1,}//其中,类似{1,}的表达表示... -
无符号数 16位二进制数取值范围
2021-10-21 20:58:541111 1111 1111 1111 + 1 = 1 0000 0000 0000 0000 1 0000 0000 0000 0000 = 2^16 所以1111 1111 1111 1111 + 1 = 2^16 所以1111 1111 1111 1111 =( 2^16 - 1) 0~( 2^16 - 1)为无符号数的取值范围 -
Python正则表达式
2020-12-19 18:58:39,f(oo|u)bar 特殊字符: \d 匹配任何十进制数字,与[0-9]表达的一样。(\D与\d相反,\D表示匹配任何非数值型的数字 比如:date\d+.txt \w 匹配任何的字母数字字符 ,与[A-Za-z0-9]相同。(与\W相反) 比如:[A-Za-z]\w... -
在LabVIEW中将十六进制转换为十进制或ASCII
2022-04-25 11:46:43在LabVIEW中,如何将十六进制值转换为十进制值?当前,我正在尝试使用“扫描值功能”,但不确定需要连接什么。 我正在与一种以十六进制值形式发送回信息的仪器进行通信。例如,不是发送字母L,而是发送回其相应的... -
Python正则表达式,看完这篇文章就够了!
2021-03-06 14:58:56可以匹配abc或者abd [ ]匹配括号中的任意1个字符[abcd]可以匹配ab、bc、cd -在[ ]内表示的字符范围内进行匹配[0-9a-fA-F]可以匹配任意一个16进制的数字 ^位于[ ]括号内的开头,匹配除括号中的字符之外的任意1个字符...