零. 概念和结论
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. 设计模式(Java语言)- 建造者模式

    前言 在日常的生活中,我们可以经常看到建造者模式的影子.比如,建造房子,那么房子就是一个产品,房子由门,窗,墙,地板等部门组成.然后包工头在建造房子的时候就根据设计好的图纸来建造,但是包工头并不是亲自 ...

  2. Scrapy模块使用出错,出现builtins.ImportError: DLL load failed: 找不到指定的程序

    问题描述:初次学习scrapy,使用scrapy官方文档创建爬虫项目出错, 出现builtins.ImportError: DLL load failed: 找不到指定的程序, ImportError ...

  3. react中dangerouslySetInnerHTML使用

    在react中,通过富文本编辑器进行操作后的内容,会保留原有的标签样式,并不能正确展示. 在显示时,将内容写入__html对象中即可.具体如下: <div dangerouslySetInner ...

  4. web概念简述,HTML学习笔记

    今日内容 1. web概念概述 2. HTML web概念概述 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务 ...

  5. 【csu oj 1542】线段树

    题目大意:给定一个合法的括号序列(只包含'(',')'),有q次操作,对每次操作改变一个位置的括号,求最左端的位置,使得改变这个位置上的括号以后,新序列合法(完全配对). 思路:对于合法的括号序列,如 ...

  6. js对页面中的内容进行拼音搜索,只对后台已经传过来的页面数据进行索引

    实现输入拼音(可以使用拼音首字母来查),来查询出已经存在于页面的数据 注意:这种写法只能适用于页面中已经存在的数据进行检索,大体意思是将本页内的数据拼接成一个字符串,然后通过该字符串去检索匹配的字符串 ...

  7. java -类加载器与反射

    类加载器 类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. l  加载 就是指将class文件读入内存,并为之创建一个Class ...

  8. java -> 异常类与自定义异常

    异常 什么是异常?Java代码在运行时期发生的问题就是异常. 在Java中,把异常信息封装成了一个类.当出现了问题时,就会创建异常类对象并抛出异常相关的信息(如异常出现的位置.原因等). 异常的继承体 ...

  9. onmouseenter,onmouseleave,onmouseover,onmouseout的区别

    首先,这四个事件两两配对使用,onmouseenter.onmouseleave一对,onmouseover.onmouseout一对,不能混合使用. onmouseenter 和 onmousele ...

  10. 数学分析新讲(1) NOTE

    前言:无聊才翻翻看看来复习啦..所以慢更(●'◡'●) 1.利用求和公式的性质推导: \[\sum^{n}_{k=1}k=n \] \[\sum^{n}_{k=1}k^2=\frac{n(n+1)(2 ...