零. 概念和结论
1. 数:概念名,指代物体的多少,即物体的量的概念;
2. 值:概念属性,数的值,是数的大小的衡量;
3. 十进制:值的表示,是数值在形式上的表现。形式相对内涵(意义)而言,某种形式表示的符号需要人来解读才有意义。十进制是人类自然而然形成的数值表示形式:
a. 包括十个符号表示十个基本数值:阿拉伯数字:0, 1, 2, 3, 4, 5, 6, 7, 8, 9
b. 使用进位(满十进一)来表示所有自然数: 10,11,12,13,14,15,16,17,18,19,20,21,...;
4. 自然数:Natural number, 人类在进化过程中自然而然用来计数、排序的数字。用现代划分,即为非负整数。十进制也是人类在进化过程中自然而然采用的数值表示形式,十进制的符号可以完整表示自然数;
5. 非自然数:指人类根据自然数和后来的实际需要,引申出来的数值表示形式。非自然数无法仅仅使用十进制的十个基本符号表达。小数需要添加小数点,分数需要添加分数线,负数需要添加负号,无理数需要根号、循环负号、省略号,虚数需要i,等等。
6. 符号:引入负数时,引入符号的概念。分为正负号。在引入负数之前,自然数可以认为是无符号的数字。引入负数之后,自然数被认为是带有负号的数字,0以上的自然数带有正号,0以下的整数带有负号。
7. 编码:使用基本数值符号表示非自然数的形式、方法,也就是不使用正负号、小数点、分数线等;
8. 二进制:使用0,1这两个基本数值符号和“满二进一”的进位规则的数值表示形式;同样,在不考虑符号的情况下,二进制也只是自然数的表示形式。即,无符号二进制数表示的是自然数。
9. 二进制编码:(不考虑浮点数的情况下)使用0,1这两个基本数值符号表示自然数和负整数的编码方式。因为不使用正负号,则需要使用0和1分别表示正号和负号。
原码把符号编码和数值编码分开处理,包括四则运算时也是分开处理。
补码则把符号编码和数值编码统一处理,包括四则运算时也统一处理。
原码和补码因负整数而存在,不考虑符号,则不存在这两个概念,只有二进制数(0,1,满二进一)的概念。

一. 二进制
 
二进制是指以2为基数,满二进一,以0,1为基本数值符号的数值表示形式。二进制是计算机中使用的数值表示形式,参考十进制引入。
二进制首先是一个数值表示形式。数,首先是自然数。四则运算,首先是自然数的四则运算。
即:二进制数值表示形式,首先解决自然数的表示和四则运算。其次,才考虑如何解决小数、分数、无理数、虚数的表示方法和运算方法。
 
二. 无符号数就是自然数
 
无符号二进制数,即是没有引入符号的二进制数,所有的位都是数值的表示,不包含符号。这种形式表示的数值是自然数。
自然数的四则运算:加和乘可以自然进行,结果也可以自然表示,没有问题。减存在不够减的问题,除存在除不尽的问题。这个与进制无关,十进制也存在这样的问题。
在引入符号和负数以前,如小学低年级学习减法和除法,减法需要先比较大小,然后再减;除法的结果则有商和余数两个值。
 
三.有符号数的编码方式
 
不引入符号,则二进制数只有数值部分。引入符号和负数的概念,则需要表达正负号。计算机不如人类,可以直接用笔写正号和负号,或者印刷正号和负号。目前而言,计算机中所有的一切都是使用0和1进行表示,也包括正号和负号。
编码针对有符号数而言,即如何使用二进制数值符号0和1表示符号部分和数值部分。
原码:符号部分和数值部分分开处理
四则运算运算时,也把符号部分和数值部分分开处理。加负数相当于减;减负数相当于加;乘则把符号提取出来单独相乘,再把最终的符号赋给积,负负得正;除的符号亦是如此。
补码:符号部分和数值部分统一处理,即符号部分参与运算。
首先,反码不是独立的编码。其次,补码是可以把符号位带入运算,着实很神奇,这里略去不表。
 
四.计算机中需要几种加减乘除实现
 
这取决于有符号数编码能否实现符号带入运算。
如果有符号数使用原码表示,则每种运算需要两种实现:
把二进制数据全部当成数值部分的无符号数运算,即二进制自然数运算;
把二进制数据当成是符号部分和数值部分编码在一起的原码表示的有符号数运算;
 
如果有符号数使用补码表示,根据Java Integer类的说法,二的补码表示方法,可以实现加减乘统一运算,除不可以。所以加减乘只需要一种实现处理无符号数(不考虑符号的数)和有符号数的运算,而除法则需要分开处理,有两种实现。(再考)

IC-二进制, 自然数, 有符号数的更多相关文章

  1. verilog 有符号数(2转)

    在数字电路中,出于应用的需要,我们可以使用无符号数,即包括0及整数的集合:也可以使用有符号数,即包括0和正负数的集合.在更加复杂的系统中,也许这两种类型的数,我们都会用到. 有符号数通常以2的补码形式 ...

  2. C/C++ byte 转 int 有符号数,转成Int 无符号数

    p.p1 { margin: 0; font: 12px "Helvetica Neue"; color: rgba(69, 69, 69, 1); min-height: 14p ...

  3. 什么是无符号段整数,什么又是有符号数,(c++与java语言里边的不同)

    c++中:整型数分为有符号数和无符号数两种 unsigned int a;无符号整型变量a,意思是这个数最小值为0,最大值为2的32次方-1,因为一个整型数占四个字节,一个字节8位,共32位 int ...

  4. c语言中,如果将无符号数转换为有符号数

    在使用ti的adc芯片ads1259时,芯片是24为数据格式保存的,其中最高位是符号位,因此可以理解为是有符号数据,但是在嵌入式系统中,没有直接24位的变量,因此使用32的无符号先保存24位的数据. ...

  5. jchdl - GSL实例 - Sub(二的补码实现)

    https://mp.weixin.qq.com/s/10fgjqPt2pRvIJzjDGYgBg   概念辨析   <IC-二进制, 自然数, 有符号数>:https://mp.weix ...

  6. Protocol Buffer 序列化原理大揭秘 - 为什么Protocol Buffer性能这么好?

    前言 习惯用 Json.XML 数据存储格式的你们,相信大多都没听过Protocol Buffer Protocol Buffer 其实 是 Google出品的一种轻量 & 高效的结构化数据存 ...

  7. 深入理解计算机系统(2.7)---二进制浮点数,IEEE标准(重要)

    2.6我们进行了二进制整数运算的最后一役,本次LZ将和各位一起进入浮点数的世界,这里没有无符号,没有补码,但是有各种各样的惊奇.倘若你真正的进入了浮点数的世界,一定会发现它原来是这么有意思,而不是像之 ...

  8. 深入理解计算机系统(2.4)---C语言的有符号与无符号、二进制整数的扩展与截断

    开篇请各位猿友允许LZ啰嗦几句,最近一直在写计算机系统原理这系列文章,也已经下定决心要把这本书的内容写完.主要目的其实是为了巩固LZ的理解,另外也想把这些内容分享给猿友们,毕竟LZ觉得这些内容对程序猿 ...

  9. c的基础 1. 无符号数和补码

    计算机中储存和处理的信息是以二进制信号表示的.单个的位不是是很实用,而将这些位 组合在一起,加上某种解释,即给不同的可能位模式赋予含义,我们就行表示怎样有限集合的元素,即实现各种数据结构.计算机中使用 ...

随机推荐

  1. 06_CSS入门和高级技巧(4)

    复习 CSS : 负责样式层,层叠式样式表cascading style sheet.CSS2.1,最新版本CSS3. CSS选择器: 选择哪些元素加样式.基本选择3种:标签p.id选择器#id.cl ...

  2. 【HBase】通过Java代码实现HBase数据库中数据的增删改查

    目录 创建maven工程,导入jar包 java代码实现创建hbase表 java代码实现向hbase表中插入数据 java代码查询hbase数据 使用rowKey查询指定列族指定列的值 通过star ...

  3. Android如何设置只有边框背景透明的背景呢?

    很简单,只需要新建一个 drawable 文件 <?xml version="1.0" encoding="utf-8"?> <shape x ...

  4. 字符串匹配算法:Sunday算法

    背景 我们第一次接触字符串匹配,想到的肯定是直接用2个循环来遍历,这样代码虽然简单,但时间复杂度却是\(Ω(m*n)\),也就是达到了字符串匹配效率的下限.于是后来人经过研究,构造出了著名的KMP算法 ...

  5. 基于VUE实现的h5网页Web出库单入库单打印设计

    经过将近一个月的研发,初步实现了打印单据的自定义设计,样子还有点丑陋,但是功能基本都实现了,实现了以下功能: 1.表头表尾支持动态添加行.添加列.合并单元格(可多行多列合并). 2.表头表尾分别布局, ...

  6. 黑马程序员_毕向东_Java基础视频教程——算术运算符小点(随笔)

    算术运算符小点 ​ 取模 class Test{ public static void main(String[] args){ System.out.println( 1 % -5); System ...

  7. VST的安装

    对需要使用VST的用户,你可以到http://www.soft-gems.net/去免费下载没有使用限制.没有广告的VST.包括例子程序以及说明文档也可以下载到,下载完成后,就是安装,以前版本的VST ...

  8. 「雕爷学编程」Arduino动手做(39)——DS18B20温度传感器

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  9. express.static设置缓存

    之前因为服务器端脚本不大,都是直接手写,按请求文件后缀名设置cache-control的max-age. 今天决定还是改成express,发现原来express.static()方法设置缓存,直接在参 ...

  10. mysql运维入门6:MySQL读写分离

    Amoeba 以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy 集中想用应用的请求,根据用户事先设置的规则,将SQL请求发送到特定的数据库上执行 基于此可以实现负载均衡.读写分离 ...