-9 逆序输出一个整数的各位数字_计算机基础知识: 信息数字化
计算机、数据与信息
无符号位数的表示
(一)、四种常用的数制及它们之间的相互转换:
进制 |
基数 |
基数个数 |
权 |
进数规律 |
十进制 |
0、1、2、3、4、5、6、7、8、9 |
10 |
10i |
逢十进一 |
二进制 |
0、1 |
2 |
2i |
逢二进一 |
八进制 |
0、1、2、3、4、5、6、7 |
8 |
8i |
逢八进一 |
十六进制 |
0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F |
16 |
16i |
逢十六进一 |
注意:在进行十六进制运算时,A、B、C、D、E、F六个字母要化成对应的十进制数:
10、11、12、13、14、15,详见后面例题。
十进制、二进制、八进制与十六进制数字对照表(要求熟记于心)
十进制 |
二进制 |
八进制 |
十六进制 |
0 |
0000 |
0 |
0 |
1 |
0001 |
1 |
1 |
2 |
0010 |
2 |
2 |
3 |
0011 |
3 |
3 |
4 |
0100 |
4 |
4 |
5 |
0101 |
5 |
5 |
6 |
0110 |
6 |
6 |
7 |
0111 |
7 |
7 |
8 |
1000 |
10 |
8 |
9 |
1001 |
11 |
9 |
10 |
1010 |
12 |
A |
11 |
1011 |
13 |
B |
12 |
1100 |
14 |
C |
13 |
1101 |
15 |
D |
14 |
1110 |
16 |
E |
15 |
1111 |
17 |
F |
十进制数转换为二进制数、八进制数、十六进制数的方法:
整数转换方法:除基反取余法
小数转换方法:乘基取整法
二进制数、八进制数、十六进制数转换为十进制数的方法:按权展开求和法
1.二进制与十进制间的相互转换:
(1)二进制转十进制
方法:“按权展开求和”
例: (1011.01)2=(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10
=(8+0+2+1+0+0.25)10
=(11.25)10
规律:个位上的数字的次数是0,十位上的数字的次数是1,......,依奖递增,而十分位的数字的次数是-1,百分位上数字的次数是-2,......,依次递减。
注意:不是任何一个十进制小数都能转换成有限位的二进制数。
(2)十进制转二进制
· 十进制整数转二进制数:“除以2取余,逆序输出”(短除反取余法)
例:(89)10=(1011001)2
2 89
2 44 ……1
2 22 ……0
2 11 ……0
2 5 ……1
2 2 ……1
2 1 ……0
0 ……1
· 十进制小数转二进制数:“乘以2取整,顺序输出”(乘2取整法)
例: (0.625)10= (0.101)2
0.625
X 2
1.25 1
X 2
0.5 0
X 2
1.0 1
2.八进制与二进制的转换:
二进制数转换成八进制数:从小数点开始,整数部分向左、小数部分向右,每3位为一组用一位八进制数的数字表示,不足3位的要用“0”补足3位,就得到一个八进制数。
八进制数转换成二进制数:把每一个八进制数转换成3位的二进制数,就得到一个二进制数。
例:将八进制的37.416转换成二进制数:
3 7 . 4 1 6
011 111 .100 001 110
即:(37.416)8 =(11111.10000111)2
例:将二进制的10110.0011 转换成八进制:
0 1 0 11 0 . 0 0 1 1 0 0
2 6 . 1 4
即:(10110.011)2= (26.14)8
3.十六进制与二进制的转换:
二进制数转换成十六进制数:从小数点开始,整数部分向左、小数部分向右,每4位为一组用一位十六进制数的数字表示,不足4位的要用“0”补足4位,就得到一个十六进制数。
十六进制数转换成二进制数:把每一个八进制数转换成4位的二进制数,就得到一个二进制数。
例:将十六进制数5DF.9 转换成二进制:
5 D F . 9
0101 1101 1111 .1001
即:(5DF.9)16=(10111011111.1001)2
例:将二进制数1100001.111 转换成十六进制:
0110 0001 . 1110
6 1 . E
即:(1100001.111)2=(61.E)16
注意:以上所说的二进制数均是无正、负符号的数。这些数的范围如下表:
无符号位二进制数位数 |
数值范围 |
十六进制范围表示法 |
8位二进制数 |
0~255 (255=28-1) |
00~0FFH |
16位二进制数 |
0~65535 (65535=216-1) |
0000H~0FFFFH |
32位二进制数 |
0~232-1 |
00000000H~0FFFFFFFFH |
符号位数的表示
一、符号数的机器码表示方法
1.带符号二进制数的表示方法:
带符号二进制数用最高位的一位数来表示符号:0表示正,1表示负。
含符号位二进制数位数 |
数值范围 |
十六进制范围表示法 |
8位二进制数 |
-128 ~ +127 |
80H~7FH |
16位二进制数 |
-32768 ~ +32767 |
8000H~7FFFH |
32位二进制数 |
-2147483648 ~ +2147483647 |
80000000H~7FFFFFFFH |
2、符号位的机器码表示:
1)机器数和真值
数在计算机中的表示形式统称为机器数,它有两上特点:其一,数的符号数值化;其二,二进制数的位数受计算机设备字长的限制。
字长:机器内部一次能表示的二进制位数由机器的字长,字长8位叫一个字节(Byte),一般机器字长都是字节的整数倍,如字长8位、16位、32位、64位等。
机器数的真值:指带符号位的机器数所对应的十进制数值;如符号数01001B,11011B的真值分别是+9和-11。
2)最常用的机器数的表示方法:原码、反码和补码。
(1)原码表示法:一个机器数x由符号闰和有效数值两部分组成,设符号位为x0,x真值的绝对值|x|=x1x2x3...xn,则x的机器数原码可表示为:
[x]原= ,当x>=0时,x0=0,当x<0时,x0=1。
例如:已知:x1=-1011B,x2= +1001B,则x1,x2有原码分别是
[x1]原=11011B,[x2]原=01001B
规律:正数的原码是它本身,负数的原码是取绝对值后,在最高位(左端)补“1”。
(2)反码表示法:一个负数的原码符号位不变,其余各位按位取反就是机器数的反码表示法。正数的反码与原码相同。
按位取反的意思是该位上是1的,就变成0,该位上是0的就变成1。即1=0,0=1
设[x]原=,则当x0=0时,[x]反=[x]原=,
当x0=1时,[x]反=[x]原=。
例:,,求和。
解:=,=
(3)补码表示法:
首先分析两个十进制数年运算:78-38=41,79+62=141
如果使用两位数的运算器,做79+62时,多余的100因为超出了运算器两位数的范围而自动丢弃,这样在做78-38的减法时,用79+62的加法同样可以得到正确结果。
模是批一个计量系统的测量范围,其大小以计量进位制的基数为底数,位数为指数的幂。如两位十进制数的测量范围是1——9,溢出量是100,模就是102=100,上述运算称为模运算,可以写作:
79+(-38)=79+62 (mod 100)
进一步写为 -38=62,此时就说 –38的补法(对模100而言)是62。计算机是一种有限字长的数字系统,因此它的运算都是有模运算,超出模的运算结果都将溢出。n位二进制的模是2n,
一个数的补码记作[x]补,设模是M,x是真值,则补码的定义如下:
例:设计算机字长n=8位,机器数真值x=-1011011B,求[x]补。
解:因为 n=8,所以模 M=28=100000000B,x<0,所以
[x]补=M+x=100000000B-1011011B=10100101B
注意:这个x的补码的最高位是“1”,表明它是一个负数。对于二进制数还有一种更加简单的方法由原码求出补码:
(1)正数的补码表示与原码相同;
(2)负数的补码是将原码符号位保持“1”之后,其余各位按位取反,末位再加1便得到补码,即取其原码的反码再加“1”:[x]补=[x]补+1。
下表列出的8位二进制原码,反码和补码并将补码用十六进制表示。
真值 |
原码(B) |
反码(B) |
补码(B) |
补码(H) |
+127 |
0 111 1111 |
0 111 1111 |
0 111 1111 |
7F |
+39 |
0 010 0111 |
0 010 0111 |
0 010 0111 |
27 |
+0 |
0 000 0000 |
0 000 0000 |
0 000 0000 |
00 |
-0 |
1 000 0000 |
1 111 1111 |
0 000 0000 |
00 |
-39 |
1 010 0111 |
1 101 1000 |
1 101 1001 |
D9 |
-127 |
1 111 1111 |
1 000 0000 |
1 000 0001 |
81 |
-128 |
无法表示 |
无法表示 |
1 000 0000 |
80 |
从上可看出,真值+0和-0的补码表示是一致的,但在原码和反码表示中具有不同形式。8位补码机器数可以表示-128,但不存在+128的补码与之对应,由此可知,8位二进制补码能表示数的范围是-128——+127。还要注意,不存在-128的8位原码和反码形式。
二、定点数和浮点数
(一)定点数(Fixed-Point Number)
计算机处理的数据不仅有符号,而且大量的数据带有小数,小数点不占有二进制一位而是隐含在机器数里某个固定位置上。通常采取两种简单的约定:一种是约定所有机器数的小数的小数点位置隐含在机器数的最低位之后,叫定点纯整机器数,简称定点整数。如
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
小数点位置
若有符号位,符号位仍在最高位。因小数点隐含在数的最低位之后,所以上数表示+1011001B。另一种约定所有机器数的小数点隐含在符号位之后、有效部分最高位之前,叫定点纯小数机器数,简称定点小数,例如
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
小数点位置
最高位是符号,小数点在符号位之后,所以上数表示 -0.0101101B。
无论是定点整数,还是定点小数,都可以有原码、反码和补码三种形式。例如定点小数
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
如果这是个原码表示的定点小数,[x]原=11110000B,则x= -0.111B=-0.875D,如这是补码表示的定点小数,[x]补=11110000B,则[x]原=10010000B,则x= -0.001B=-0.125D。(想一想,如何由补码求原码?)
(二)浮点数(Floating-Point Number)
计算机多数情况下采作浮点数表示数值,它与科学计数法相似,把一个二进制数通过移动小数点位置表示成阶码和尾数两部分:
其中:E——N的阶码(Expoent),是有符号的整数
S——N的尾数(Mantissa),是数值的有效数字部分,一般规定取二进制定点纯小数形式。
例:1011101B=2+7*0.11101,101.1101B=2+3*0.1011101,0.01011101B=2-1*1011101
浮点数的格式如下:
E0 |
E1E2……………En |
E0 |
E1E2……………En |
阶符 阶 尾符 尾数
浮点数由阶码和尾数两部分组成,底数2在机器数中不出现,是隐含的。阶码的正负符号E0,在最前位,阶反映了数N小数点的位置,常用补码表示。二进制数N小数点每左移一位,阶增加1。尾数是这点小数,常取补码或原码,码制不一定与阶码相同,数N的小数点右移一位,在浮点数中表现为尾数左移一位。尾数的长度决定了数N的精度。尾数符号叫尾符,是数N的符号,也占一位。
例:写出二进制数-101.1101B的浮点数形式,设阶码取4位补码,尾数是8位原码。
-101.1101=-0.1011101*2+3
浮点形式为:
阶码0011 尾数11011101
补充解释:阶码0011中的最高位“0”表示指数的符号是正号,后面的“011”表示指数是“3”;尾数11011101的最高位“1”表明整个小数是负数,余下的1011101是真正的尾数。
浮点数运算后结果必须化成规格化形式,所谓规格化,是指对于原码尾数来说,应使最高位数字S1=1,如果不是1且尾数不是全0时就要移动尾数直到S1=1,阶码相应变化,保证N值不变。
例:计算机浮点数格式如下,写出x=0.0001101B的规格化形式,阶码是补码,尾数是原码。
x=0.0001101=0.1101*10-3
又[-3]补=[-001B]补=[1011]补=1101B
所以 规格化浮点数形式是
1 |
101 |
0 |
1101000 |
三、ASCII码 ( American Standard Code forInformation Interchange )
美国标准信息交换代码
将每个字符用7位的二进制数来表示,共有128种状态
大小字母、0…9、其它符号、控制符
‘ 0 ’ ―― 48
‘ A ’ ―― 65
‘ a ’ ―― 97
汉字信息编码
1.汉字输入码
汉字输入方法大体可分为:区位码(数字码)、音码、形码、音形码。
· 区位码:优点是无重码或重码率低,缺点是难于记忆;
· 音码:优点是大多数人都易于掌握,但同音字多,重码率高,影响输入的速度;
· 形码:根据汉字的字型进行编码,编码的规则较多,难于记忆,必须经过训练才能较好地掌握;重码率低
· 音形码:将音码和形码结合起来,输入汉字,减少重码率,提高汉字输入速度;
2.汉字交换码
汉字交换码是指不同的具有汉字处理功能的计算机系统之间在交换汉字信息时所使用的代码标准。自国家标准GB2312-80公布以来,我国一直延用该标准所规定的国标码作为统一的汉字信息交换码。
GB2312-80标准包括了6763个汉字,按其使用频度分为一级汉字3755个和二级汉字3008个。一级汉字按拼音排序,二级汉字按部首排序。此外,该标准还包括标点符号、数种西文字母、图形、数码等符号682个。
区位码的区码和位码均采用从01到94的十进制,国标码采用十六进制的21H到73H(数字后加H表示其为十六进制数)。区位码和国标码的换算关系是:区码和位码分别加上十进制数32。如“国”字在表中的25行90列,其区位码为2590,国标码是397AH。
* 由于GB2312-80是80年代制定的标准,在实际应用时常常感到不够,所以,建议处理文字信息的产品采用新颁布的GB18030信息交换用汉字编码字符集,这个标准繁、简字均处同一平台,可解决两岸三地间GB码与BIG5码间的字码转换不便的问题。
3.字形存储码
字形存储码是指供计算机输出汉字(显示或打印)用的二进制信息,也称字模。通常,采用的是数字化点阵字模。如下图:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
|
1 |
||||||||||||||||
2 |
||||||||||||||||
3 |
||||||||||||||||
4 |
||||||||||||||||
5 |
||||||||||||||||
6 |
||||||||||||||||
7 |
||||||||||||||||
8 |
||||||||||||||||
9 |
||||||||||||||||
10 |
||||||||||||||||
11 |
||||||||||||||||
12 |
||||||||||||||||
13 |
||||||||||||||||
14 |
||||||||||||||||
15 |
||||||||||||||||
16 |
一般的点阵规模有16×16,24×24,32×32,64×64等,每一个点在存储器中用一个二进制位(bit)存储。例如,在16×16的点阵中,需16×16=8×32 bit 的存储空间,每8bit为1字节,所以,需32字节的存储空间。在相同点阵中,不管其笔划繁简,每个汉字所占的字节数相等。
为了节省存储空间,普遍采用了字形数据压缩技术。所谓的矢量汉字是指用矢量方法将汉字点阵字模进行压缩后得到的汉字字形的数字化信息。
4.其它信息的数字化
1)、图像信息的数字化
一幅图像可以看作是由一个个像素点构成,图像的信息化,就是对每个像素用若干个二进制数码进行编码。图像信息化后,往往还要进行压缩。
图像文件的后缀名有:bmp、gif、jpg等;
2)、声音信息的数字化
自然界的声音是一种连续变化的模拟信息,可以采用A/D转换器对声音信息进行数字化。
声音文件的后缀名有:wav、mp3、mid等;
3)、视频信息的数字化
视频信息可以看成连续变换的多幅图像构成,播放视频信息,每秒需传输和处理25幅以上的图像。视频信息数字化后的存储量相当大,所以需要进行压缩处理。
视频文件后缀名有:avi、mpg等;
-9 逆序输出一个整数的各位数字_计算机基础知识: 信息数字化相关推荐
- -9 逆序输出一个整数的各位数字_【每日算法】基础算法——归并排序[求逆序对的数量](四)(思想很经典)...
题目内容 给定一个长度为n的整数数列,请你计算数列中的逆序对的数量. 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆 ...
- -9 逆序输出一个整数的各位数字_【Java编程基本功】(八)逆序输出、是否为回文数,判断星期几,升序排列...
第二十四题 给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字. 代码: public 第二十五题 一个5位数,判断它是不是回文数. 代码: public 代码2: public ...
- -9 逆序输出一个整数的各位数字_逆序对个数(归并排序)
题目描述 输入 N 组数据,对每组数据输出逆序对个数. 输入 对于每组测试用例,第一行输入此组数据元素个数 x,接下来 x 行,每行一个数,表示元素.(1≤x≤500000)(1≤x≤500000) ...
- -9 逆序输出一个整数的各位数字_leetcode两数相加(大整数相加)
题目来源于leetcode第二题两数相加. 题目描述 给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字. 如果,我们将这两个数相 ...
- 如何逆序输出一个整数
给出一个整数,将它逆序输出,首先求出它是一个几位数,利用for循环将数字从高位到低位分别输出.例如1234这个数,首先通过for循环求出,它是一个4位数,然后1234第一次除以1000,得到1并输出, ...
- python输入一个正整数、将其按逆序输出_Python实现按照指定要求逆序输出一个数字的方法...
本文实例讲述了Python实现按照指定要求逆序输出一个数字的方法.分享给大家供大家参考,具体如下: 问题是:输入一个数字,按照指定要求逆序输出该数字,很简单,下面是实现: #!usr/bin/env ...
- java实现:使用递归编写一个程序,逆序输出一个非负整数。例如输入1234,输出4321(不含前导0)。
验证集: 输入>输出 123>321 120>21 2040>402 204000>402 直接给代码,注释应该够了. //使用递归编写一个程序,逆序输出一个非负整数. ...
- c语言任意整数正序输出,C语言—正序,逆序输出任意整数的每一个数字
从2016年大一进校进入计算机专业也有一段时间了,对这个行业也有了自己的理解和想法,从中我感受到了计算机的特别,从代码中也能发现属于自己的乐趣,也坚定了我在这条道路上走下去的信心. 为了能更好的和网上 ...
- C语言之逆序输出一个四位数
版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/qq_42680327 题目:从键盘输入一个四位数,要求逆序输出 代码: #include < ...
最新文章
- matlab门槛回归,重磅!这可能是最全的门槛回归汇总了
- js进阶 10-8 伪类选择器有哪几类(自己不用,永远不是自己的)
- cmd运行Java中文乱码,无法加载主类Error: Could not find or load main class
- Redis第二集:Linux下安装Redis和测试,包含命令代码和问题处理办法,超详细版
- mysql 关联关系
- 车联网 python_利用百度车联网提供的天气查询接口用python查询天气信息
- 我的Mac os x中的nginx配置文件nginx.conf
- 使用js数组sort比较函数,实现按照对象的某个属性对数组进行排序
- android 高音质 播放器,安卓音质最强音乐播放器—Rockbox
- 图像特征提取:Sobel边缘检测
- 二. Binding 详解
- 导数、偏导数、梯度、方向导数、梯度下降、二阶导数、二阶方向导数
- fabric ca 使用案例
- 2021版《数据结构》课程学习指南
- 微信小程序云开发如何实现上传视频 以及 图片
- MATLAB 数据分析方法(第2版)1.2 MATLAB基础概述
- 步进电机驱动控制总结(一)
- ACM-音频编解码器管理器
- Excel 处理重复数据的几种方法
- 163邮箱发送不出去服务器,我是网易163的免费邮箱,最近发现不能发邮件了,不知怎么回事,请热水人帮一下。...
热门文章
- nginx的hash表结构
- [ python ] 正则表达式及re模块
- NOIP 2017 提高组 K: 奶酪 (SPFA || 并查集)
- 执行RF测试只生成output.xml文件,不生成log和report文件
- numpy 或者是 pandas 矩阵循环
- 搞定vim的窗口操作
- MySQL同步复制搭建方法指南详细步骤
- 常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全
- 大学生学习c语言方法,针对在校大学生的C语言入门学习——函数
- Could not find destination factory for transport解决方法