-
十进制数,二进制数,八进制数,十六进制数之间的转换
2019-10-28 15:40:31一、R进制转换为十进制 R进制转换为十进制的方法是“按权展开”。 1.二进制转换为十进制: ...3.十六进制转十进制: (A2C)16=10x162+2x161+12x160=(2604)16 二、十进制转换为R进制 将十进制转换为R进制时,...一、R进制转换为十进制
R进制转换为十进制的方法是“按权展开”。
1.二进制转换为十进制:
(11010)2=1x24+1x23+0x22+1x21+0x20=(26)10
2.八进制转十进制:
(140)8=1x82+4x81+0x80=(96)10
3.十六进制转十进制:
(A2C)16=10x162+2x161+12x160=(2604)16二、十进制转换为R进制
将十进制转换为R进制时,可以将此数分成整数与小数两部分分别转换,然后拼接起来即可。
1.十进制整数转换为二进制整数
十进制zheng’shu转换为二进制整数的方法是“除2取余法”。
具体步骤为:把十进制数除以2得到一个商和一个余数,用商再继续除以2,又得到一个商和一个余数……直到商为0为止。以最先取得的余数作为最低位,最后取得的余数作为最高位。
下面我们以15作为例子:
(1)19/2=9……1
(2)9/2=4……1
(3)4/2=2……0
(4)2/2=1……0
(5)1/2=0……1
结果为(19)10=(1001)2
注意:将余数从高位向低位排列;2.十进制小数转换为二进制小数
十进制转换为二进制整数的方法是“乘2取整法”。
具体步骤为:把小数部分乘以2得到一个新的数,然后取整数部分,再把剩余的小数部分乘以二,取整数部分……,以最乘得的整数作为最高位,最后乘得的整数作为最高位。
下面我们以0.75作为例子:
(1)0.75x2=1.5 取整数1
(2)0.5x2=1.0 取整数1
结果为(0.75)10=(0.11)2
注意:将乘数从高位向低位排列;3.将十进制整数转换为八进制整数
采用类似的“除8取余”的方法。我们不再赘述。
我们以33作为例子:
(1)96/8=12……0
(2)12/8=1……4
(2)1/8=0……1
结果为(96)10=(140)83.将十进制小数转换为八进制小数
采用类似的“乘8取整”的方法。
我们以0.125作为例子:
(1)0.125x8=1 取整数1
结果为:(0.125)10=(0.1)84.将十进制整数转换十六进制整数
采用类似的“除8取余”的方法。
我们以65作为例子:
(1)65/16=4……1
(2)4/16=0……4(往前进三位)
结果为:(65)10=(10001)165.将十进制小数转换十六进制小数
采用类似的“乘16取整”的方法
我们以0.25作为例子:
(1)0.25x16=4 往后退三位
结果为:(0.25)10=(0.0001)16三、二进制转换成十六进制
具体步骤为:
(1)二进制从小数点开始,整数部分向左,小数部分向右,每四位分成一节。
(2)整数部分最高位与小数部分最低位不足四位时补零。
(3)将每节四位二进制数依次转换成一位十六进制数。再把它们拼接起来。
我们以(10111100101.00011001101)2为例:
0101 1110 0101 . 0001 1001 1010
5 E 5 . 1 9 A
结果为:(10111100101.00011001101)2=(5E5.19A)16
将十六进制转换为二进制也是一个道理,反过来即可。四、二进制转换为八进制
具体步骤为:
(1)二进制从小数点开始,整数部分向左,小数部分向右,每三位分成一节。
(2)整数部分最高位与小数部分最低位不足四位时补零。
(3)将每节三位二进制数依次转换成一位八进制数。再把它们拼接起来。
我们以(10100010001.10100101)2为例:
010 100 010 001 . 101 001 010
2 4 2 1 . 5 1 2
结果为:(10100010001.10100101)2=(2421.512)8
将八进制转换为二进制也是一个道理,反过来即可。 -
从php中定义长度的十六进制字符串中获取参数
2017-05-19 21:52:130x00,0x81->Packet length:129 0xaa,0x02->Packet command:AA02[hex] 0x00,0x00->CRC check:0[hex] 0x00,0x00,0x00,0x01->Serial number:1 0xc0->[SLIP End char:C0] </code></pre> <p>Example: ... -
在Golang中生成固定长度的随机十六进制字符串的有效方法?
2017-10-24 07:26:24main.RandStringBytesMaskImprSrc(0x8, 0x11f81be8, 0x8) main.go:60 +0x5f </code></pre> <p>The errror seem to be in <code>for i, cache, remain := n-1, src.Int63(), letterIdxMax; i >= 0;, but I don't... -
计算机基础进制转换及原码/反码/补码
2020-12-12 10:45:24为了跟程序中的进制表达一样,下面我用(0b,0,0x分别表示二进制,八进制,十六进制) 十进制 12345 5100+4*101+3102+2*103+110^4 二进制 0b10101 120+0*21+122+0*23+12^4 = 21 八进制 0123 380+2*81+18^2 =83 十六...进制转换
其他进制转换为十进制
为了跟程序中的进制表达一样,下面我用(0b,0,0x分别表示二进制,八进制,十六进制)
十进制 35
二进制 0b10101
八进制 0123
十六进制 0x110
十进制转换为二进制(除2倒取余)
除2即是将十进制的数除2,取余,所得商再除2取余,直到不能整除,最后将余数从下至上写出来
十进制转八进制
转换方法跟十进制转二进制一样,只是转八进制是除8求余
十进制转16进制
思路和前面两种进制转换相同
由此可得各进制的取值:
二进制取值:0 1
八进制取值:0 1 2 3 4 5 6 7
十六进制:0 1 2 3 4 5 6 7 8 9 A B C D E F上面都是整数的十进制转其它进制,接下来讲述带小数点
整数是除2取余,小数则是乘以对应进制数取整,直到达到要求的精度,顺序排列
十进制转二进制(小数)
具体做法:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数 部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。以10.8来举例
十进制转八进制
与二进制计算方法相同!
十进制转16进制
二进制转八进制
将二进制数,从右往左,每3个数字分成一份,将每一份的二进制数转换为10进制,然后将十进制数拼起来就是结果
0b1100100 (编程中0b开始表明该数是二进制 )从右往左每三个组成一份 1 100 100 不够再最前面添0 001 100 100 最后用二进制转十进制方法挨个计算 1 4 4 答案即是 0144 (编程语言中常常以数字0开始表明该数字是八进制,文章开头有提及)
二进制转十六进制
将二进制数,从右往左,每4个数字分成一份,将每一份的二进制数转换为十进制,然后将转换之后的10进制数拼起来就是结果
0b11101000 每4个分成一组 1110 1000 按二进制转十进制方法挨个计算 e 8 答案即是0xe8 补充:十六进制中10 11 12 13 14 15分别表示为a b c d e f (字母不区分大小写)
原码/反码/补码
计算机中处理数据最小单位:bit
在实际使用中最少使用8个bit来存放数据,也就是一个byte
计算机为了能存放负数,所以设计为:第一位为符号位
1:表示负数
0:表示整数例如:10000001 ----->-1 00000001 ------->1
那么10000000与00000000相等嘛,按照数学理论来说,两者都是数值为0
但是计算机为了不用两个byte表示一个数字,所以将10000000设计值为-128
所以一个byte的取值范围:-128~127计算机在存数字时,其实都是在存该数字对于的补码形式
原码:就是该数字本身的二进制形式
反码:
正数的反码与该数字的原码形式一致 负数的反码,符号位不变,其他为全部取反
1的反码:00000001 -1的反码:11111110
补码:
正数的补码与该数字的原码形式一直 负数的补码:该数字的反码+1;即对原码:符号位不变取反+1
1的补码:00000001 -1的补码:11111111
计算机底层存放补码,可以提高运算的效率,例如求1-1的值,其实就相当于1+(-1)
00000001
+
11111111
············
00000000记住:计算机中存储的是补码形式,也就是说计算过后,也是补码
例如2-3=-1
2的原码:0000 0010 2的反码:0000 0010 2的补码:0000 0010
-3的原码:1000 0011 -3的反码:1111 1100 -3的补码:1111 1101
二者的补码相加结果:1111 1111 这个结果并不是计算错误,而是结果是补码形式.,又因为数值计算结果为负数,所以得再符号位不变,取反+1所以最后结果应该是:1000 0001 即-13-2 = 1
3的原码:0000 0011 3的反码:0000 0011 3的补码:0000 0011
-2的原码:1000 0010 -2的反码:1111 1101 -2的补码:1111 1110
二者补码相加结果:0000 0001。因为计算结果为整数,即符号位为0,原码的补码就是其本身。结果即为:0000 0001。整数的类型转换
基本数据类型的相互转换:
小转大,自动转
大转小,强制转
自动转自然不会存在安全隐患,但是强制转存在,即如果转换之前的值大小超过了转换之后的类型的取值范围,计算机会将超出的数据直接去掉
例如://00000000 00000000 00000000 10000010 int i = 130; //10000010 反码:10000001 原码:11111110 byte b = (byte)i System.out.println(b);//-126
上述例子是声明了一个int类型的变量,值为130,因为int类型表示4个byte,即32位,所以i的原码为00000000 00000000 00000000 10000010,将i的值赋值给byte类型的b后,由于byte所能表达的数值范围:-128~127,即八位(包含了符号位)。所以计算机会将前24位去掉。此时b的补码即为:10000010.倒推为原码:11111110。即为-126
-
Java基础-2.进制和码制
2019-12-05 10:53:17实际内存小于标注内存:500g = 500*1000 *1000 *1000 /1024 /1024 /1024 = 465g 其他进制到十进制:系数 * 基数 ^ 权次幂 二进制到十进制 0b1010101 = 1* 2^6 + 1* 2^4 + 1* 2^2...十六进制到十进制 0x52 = 5* 16^1 ...实际内存小于标注内存:500g = 500*1000 *1000 *1000 /1024 /1024 /1024 = 465g
其他进制到十进制:系数 * 基数 ^ 权次幂
二进制到十进制 0b1010101 = 1* 2^6 + 1* 2^4 + 1* 2^2 +1* 2^0 = 25
八进制到十进制 052 = 5* 81+2*80 = 42
十六进制到十进制 0x52 = 5* 16^1 +2* 16^0 = 82
十进制转换为其他进制:除积倒取余(转成几除几)
原码:00000111(+7) 10000111(-7)最高位为符号位
反码:正数反码就是原码,负数反码是符号位不变,其他位取反
补码:正数补码就是原码,负数补码是反码加一
计算机存储的时候是原码,计算的时候是补码
-
从0x00到0xFF的含义
2020-04-16 17:34:33对于二进制来说,8位二进制我们称之为一个字节,二进制的表达范围值是从0b00000000~0b11111111,而我们程序中用十六进制表示的时候就是从0x00到0xFF,这里教大家一个二进制转换十进制和十六进制的方法,二进制4位一...对于二进制来说,8位二进制我们称之为一个字节,二进制的表达范围值是从0b00000000~0b11111111,而我们程序中用十六进制表示的时候就是从0x00到0xFF,这里教大家一个二进制转换十进制和十六进制的方法,二进制4位一组,遵循8,4,2,1的规律比如 1010,那么从最高位开始算,数字大小是81+40+21+10 = 10,那么十进制就是10,十六进制就是0xA。尤其二进制转十六进制的时候,十六进制一位刚好是和二进制的4位相互对应的,这些大家不需要强行记忆,用几次就熟练了。
-
补码验证
2019-06-23 18:38:00以10进制表示打印一个十六进制数 #include <stdio.h> int main(int argc, char const *argv[]) { // 1个字节数,16进制表示,2位 // 1000 0001 = 0x81 // 二进制、八进制、十六进制需要以计算机... -
【安全】P 2-20 宽字节SQL注入2
2021-02-15 19:33:54最常使用的宽字节注入是利用%df,其实我们只要第一个ascii码大于128就可以了,比如ascii码为129的就可以,但是我们怎么将他转换为URL编码呢,其实很简单,我们先将129(十进制)转换为十六进制,为0x81,然后在十六... -
宽字节SQL注入
2021-02-25 15:28:58最常使用的宽字节注入是利用%df,其实我们只要第一个ascii码大于128就可以了,比如ascii码为129的就可以,但是我们怎么将他转换为URL编码呢,其实很简单,我们先将129(十进制)转换为十六进制,为0x81,如图1所示,... -
C语言中整型常量的表达方式
2019-08-21 17:20:38在C语言中,整型常量可用以下三种形式表示: 1. 十进制整数,即按日常接触的数字形式正常表达。如123、-120; 2. 八进制整数,以0开头的数字进行表达。如0123表示八进制数123...如0x123,代表十六进制数123,即(12... -
js实现modbus_MODBUS 通信用CRC16 JS javascript代码 (自己在用的)
2020-12-19 10:36:38用的是查表法, 纯数字处理, 16位数如1234,则在处理前需拆分成 12 34(十六进制, 程序中还是十进制操作,效果是一样的)_auchCRCHi = [ 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, ... -
MODBUS 通信用CRC16 JS javascript代码 (自己在用的)
2018-07-08 21:46:48用的是查表法, 纯数字处理, 16位数如1234,则在处理前需拆分成 12 34(十六进制, 程序中还是十进制操作,效果是一样的)_auchCRCHi = [ 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x... -
补码和原码之间转换
2018-04-28 10:49:06//二进制,八进制,十六进制站在计算机的角度,是以补码的形式存在,即0x81的补码为=1000 0001 //补码:1000 0001 //反码:1111 1110 //原码:1111 1111-------------》-127 printf("%d",ch);//以十进制输出... -
字符编码(1)
2011-09-30 15:07:00ACSII码就是1个字节表示,主要应用127以内的字符,十六进制是0X7F以内。gbk包含了gbk2312,两个字节表示。gbk2312是常用字,5千来个,早期应用很广,主要因为5千个字占内存256K以内,早期的手机有些显示不出来就是装... -
0.96寸OLED像素排列、汉字显示和取模
2020-06-19 13:42:47以常见的128x64的OLED为例。 我们常用的取模软件PC2LCD2002为例,字模选项设置如下: 阴码 逆向 列行式 十六进制 C51格式 ...{0x10,0x1F,0x08,0x08,0xFF,0x04,0x81,0x41,0x31,0x0D,0x03,0x0D,0x31,0x -
比特币指令集
2018-08-14 17:29:00整数的编码规则是最高位表示付好,对于一个字节的整数,0x81表示-1,0x80表示负0,0x03 表示3,0x83表示-3 0表示 False, 其他表示 True 常数指令 名字 指令 十六进制 输入 输出 描述 OP_0 0 0X00 nothing nothing... -
Matroska文件解析之SimpleBlock
2016-02-28 09:27:49分析二进制文件是一件痛苦的事情,最近在做一个关于流媒体的项目研究...因为要研究视频流的传输过程,所以我需要把IMediaSample保存下来,下面是一个SimpleBlock十六进制显示。 0xA3, 0xB6, 0x81, 0x00, 0x28 -
signed unsigned 的数值概念
2013-04-19 18:23:141. signed 和 unsigned 是两种类型,对存储器中的内容作不同的数值上的解释,可以理解为一个解码过程 ...(或者十六进制表示为-7F,符号和进制无关,所以存储的内容到数学上的值,需要一个理解上的转 -
DDCTF联盟决策大会-shamir解密
2019-04-20 00:31:44拿到题目是一个shamir解密和一堆十六进制字符串,使用脚本解密 import shamir p=0x85FE375B8CDB346428F81C838FCC2D1A1BCDC7A0A08151471B203CDDF015C6952919B1DE33F21FB80018F5EA968BA023741AAA50BE53056DE7303EF... -
Javascript解码格式的字符串
2019-11-06 09:48:32#x加四位十六进制数字的UTF-8编码: System.Runtime.InteropServices.COMException (0x80041FEC): 异常来自 HRESULT:0x80041FEC
 &#... -
C51单片机 串口收发 数据不一致(个人问题记录)
2020-10-13 01:27:03这是简单的将接收到的字符发送回去的程序,然而,发出去的01(十六进制,实际是0x01),收到的却是81。如果发出去02,收到82。发出去80,收到80。发出去9A,收到9A。也就是小于0x80的全部偏差了80,大于0x80的值不变... -
打开你整理的Codec,找到Vendor Id,拷贝后面的字符串,在计算器选中十六进制,粘贴这个字符串 然后选中十进制,就换转换成十进制形式 拷贝这个十进制数,打开/AppleALC/Resources/CX20751_2/Info.plist(此处...
-
使用AVR单片机在LCD1602上显示DS1302时间数据
2018-05-04 10:04:26#define READ_SECOND 0x81 #define READ_MINUTE 0x83 #define READ_HOUR 0x85 #define WRITE_PROTECT 0x8E /*------宏定义------*/ #define uchar unsigned char #define uint unsigned int /*******... -
易语言4.13正式破解版_史上最完美破解版
2009-10-29 17:03:39159544386 → 0x09827442(十六进制) 09800000 00027442 → 硬件代码计算值 3A7FEF86D9A344BD279538025A6B881ED798010002DEEA0151B9C722075E0618F6B153ACB49B357E402DF46BB4169E78E7CD6760544CD4C4419373A6AEEA5B2CA... -
单片机C语言入门-以最为流行的80C51 单片机为例来学习单片机的C 语言编程技术
2011-02-22 11:13:20(0x90 是C 语言中十六进制数的写法,相当于汇编语言中写90H)。 从这里还可以看到一个频繁出现的词:sfr sfr 并标准C 语言的关键字,而是Keil 为能直接访问80C51 中的SFR 而提供了一个新 的关键词,其用法是: sfrt... -
51单片机C语言编程基础及实例
2011-04-19 21:50:45十六进制表示字节 0x5a:二进制为 01011010B;0x6E 为 01101110。 如果将一个 16 位二进数赋给一个 8 位的字节变量,则自动截断为低 8 位,而丢掉高 8 位。 ++var 表示对变量 var 先增一;var—表示对变量后减一。 ... -
bmi160调通bmi160的ACC+GYR_20160907.7z
2016-09-07 18:07:24{ "bma250", 0, {0x18, 0x19, 0x08, 0x38}, 0x00, {0x02,0x03,0xf9,0xf8}, 0}, }; Z:\home\wwt\only_bma250_r58\lichee\tools\pack\chips\sun8iw6p1\configs\perf3_v1_0\sys_config.fex ;----------------------... -
大智慧股票本地数据读取接口(含源码)
2009-03-22 13:45:51startAddress = 0x41000; blockSize = 8192; recordSize = 32; codeIsLong = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,date,4,1,0,;" + "kp,开盘,single,4,2,4,B;" + "zg,最高,single,4,3,8,B...
-
junit-4.11和hamcrest-core-1.3 的jar包
-
CSS6,圆角边框及阴影和经验分享,方块定位练习讲解,overflow及父类边框塌陷问题
-
2.2019年海南鉴-人口(21-32).pdf
-
orgapachecommons.zip
-
DBCP连接池的jar包
-
MySQL 多实例安装 及配置主从复制实验环境
-
移除局域网默认记住的密码.txt
-
CDH-5.9.0-1.cdh5.9.0.p0.23-el7.parcel.tar.gz.ab
-
苹果发布 macOS Big Sur 11.2.2,防止MacBook被第三方不兼容底座损坏
-
程序员必修基础套餐课
-
vue3从0到1-超详细
-
modbus_example.rar
-
2021年 系统分析师 系列课
-
Circular Linked List in Python
-
03_Qt_Control.zip
-
电源接地和接零有什么作用?何时选择?
-
Unity ILRuntime框架设计
-
MySQL你该了解的那些事【服务端篇】
-
Python教程:__iter__和__next__
-
servlet.docx