计算机以电子电荷集合的形式在内存中保存指令和数据。用数字来表示这些内容就需要系统能够适应开 / 关(on/off)或真 / 假(true/false)的概念。

二进制数(binary number)用 2 个数字作基础,其中每一个二进制数字(称为位,bit)不是 0 就是 1。

位自右向左,从 0 开始顺序增量编号。左边的位称为最高有效位(Most Significant Bit, MSB)右边的位称为最低有效位(LSB, least significant bit)。一个 16 位的二进制数,其 MSB 和 LSB 如下图所示:

二进制整数可以是有符号的,也可以是无符号的。有符号整数又分为正数和负数,无符号整数默认为正数,零也被看作是正数。

在书写较大的二进制数时,有些人喜欢每 4 位或 8 位插入一个点号,以增加数字的易读性。比如,1101.1110.0011.1000.0000 和 11001010.10101100

无符号二进制整数

从 LSB 开始,无符号二进制整数中的每一个位代表的是 2 的加 1 次幂。下图展示的是对一个 8 位的二进制数来说,2 的幂是如何从右到左增加的:

下表列出了从 20 到 215 的十进制值。

2ⁿ 十进制值 2ⁿ 十进制值
20 1 28 256
21 2 29 512
22 4 210 1024
23 8 211 2048
24 16 212 4096
25 32 213 8192
26 64 214 16384
27 128 215 32768

无符号二进制整数到十进制数的转换

对于一个包含 n 个数字的无符号二进制整数来说,加权位记数法(weighted positional notation)提供了一种简便的方法来计算其十进制值:

dec = ( Dn-1 x 2n-1 ) + ( Dn-2 x 2n-2 ) +…+ ( D1 x 21 )+ ( D0 x 20 )

D 表示一个二进制数字。比如,二进制数 00001001 就等于 9。计算该值时,剔除了数字等于 0 的位:

( 1 X 23 ) + ( 1 X 20 ) = 9

下图表示了同样的计算过程:

无符号十进制整数到二进制数的转换

将无符号十进制整数转换为二进制,方法是不断将这个整数除以 2,并将每个余数记录为一个二进制数字。下表展示的是十进制数 37 转换为二进制数的步骤。余数的数字,从第二行开始,分别表示的是二进制数字D0
D1、D2、D3、D4 和 D5:

除法 余数 除法 余数
37/2 18 1 4/2 2 0
18/2 9 0 2/2 1 0
9/2 4 1 1/2 0 1

将表中余数列的二进制位逆序连接(D5,D4,…),就得到了该整数的二进制值 100101。由于计算机总是按照 8 的倍数来组织二进制数字,因此在该二进制数的左边增加两个 0,形成 00100101。

提示:有多少位呢?设无符号十进制值为 n,其对应的二进制数的位数为 b,用一个简单的公式就可以计算出 b : b = (log2n) 的上限。比如,如果 n=17,则 log217 = 4.087 463,取其上限的最小整数 5。大多数计数器没有以 2 为底的对数运算,但是有些网页可以帮助实现这种计算。

下一篇:二进制加法运算

二进制(bit)整数相关推荐

  1. python进制转换字符串转二进制对象整数转二进制对象16进制字符串转二进制对象(及其逆转换)

    (1)数字进制转换 int() 函数用于将一个字符串或数字转换为整型. x – 字符串或数字. base – 进制数,默认十进制. 如果是带参数base的话,要以字符串的形式进行输入 >> ...

  2. 整数-28d在计算机中用8位二进制表示,整数-28D,在计算机中用8位二进制表示为________。...

    整数计中用制表控制应多于(自适处在的好实现速率. 算机示一类最常消息见的是哪. 整数计中用制表的是功能属于.容主括(余额要包初始的内输入.开发中最系统的阶段是过程关键.不能如果核权凭证有审员却限的出现 ...

  3. c++将小数化为二进制_C++版进制转换(十进制,二进制,十六进制整数和小数)

    进制转换C++代码 #include #include #include #include using namespace std; void MainMenu() { system("cl ...

  4. [译]ES6新特性:八进制和二进制整数字面量

    原文:http://whereswalden.com/2013/08/12/micro-feature-from-es6-now-in-firefox-aurora-and-nightly-binar ...

  5. Python中整数移位及二进制串操作

    Python中整数移位及二进制串操作 最近一个项目涉及到电压数据的接收和可视化处理.其中电压数据是由FPGA通过TCP协议传输的二进制流,软件接收端需要安装数据帧格式进行解析后处理.由于嵌入式组的FP ...

  6. 二进制与十进制整数,浮点数相互转换

    整数转化为二进制 1.正整数用源码表示 2.负整数用绝对值的补码表示(将绝对值取反+1) 如-50用50的补码表示 50的源码为 00000000000000000000000000110010 反码 ...

  7. 二进制与十进制的整数转换

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.进制是什么? 二.常用进制 1.十进制 2.二进制 三.进制转换 1.二进转十进制 2.十进制转二进制 总结 前言 ...

  8. c语言long int表示范围_C语言编程第9讲——这些C语言整数类型的知识点你掌握了吗...

    1.char其实是一种整数类型 在C语言中,字符使用整数来表示. 例如下面的代码: #include int main(){ char letter = '2'; printf("Lette ...

  9. 把整数转换成2的n次方的和数组

    为什么80%的码农都做不了架构师?>>>    大概这样:125 => [1, 4, 8, 16, 32, 64] 写几种实现: Ruby: 2.3.1 :022 > 1 ...

  10. 第二讲,我们来谈谈:“什么是二进制”

    首先,你要记住并且不要问为什么:"在计算机中,所有的数据,最终都是使用二进制数表达的." 比如,你的电脑是32位系统,还是64位系统.其实,说的是你的电脑的计算存储能力,能够计算存 ...

最新文章

  1. 获取元素相对于屏幕的位置
  2. ASP.NET MVC的过滤器笔记
  3. REVERSE-COMPETITION-HGAME2022-Week4
  4. 【LeetCode笔记】剑指 Offer 44. 数字序列中某一位的数字(Java、偏数学)
  5. 【JEECG Docker安装】CentOS6下docker的安装和使用
  6. 如何退订语音包_怎么关闭语音助手 - 卡饭网
  7. Acwing 734. 能量石
  8. android 关闭软键盘_「安卓之父」创立的 Essential 公司宣布关闭
  9. Qt 中实现在控件中点击鼠标,就在鼠标点击处加载图片的方法
  10. 软件启动时关于启动兼容问题汇总
  11. 如何查看本地端口???
  12. 使用文件进行输入输出的两种方式(算法竞赛入门经典第2章)
  13. Hbase 的Java API 操作
  14. java坦克大战练习。java基础项目。巩固java基础部分。
  15. CLion安装 + MinGW 配置 + Opencv安装
  16. 开瑞k50和k50s 导航傻瓜升级方法,其他车载导航也可以参考。
  17. 曲线拟合最小二乘法对数c语言实现,基于最小二乘法的曲线拟合
  18. Account locked due to 10 failed logins
  19. CentOS的虚拟机网卡eth0变成eth1
  20. 程序员来聊一聊信用卡(二)——对信用卡的一些基本认识

热门文章

  1. oc58--Category注意事项
  2. leetcode 7 Reverse Integer
  3. javascript --执行上下文,作用域
  4. 谈谈我自己(创业四个多月)
  5. C# 面试前的准备_基础知识点的回顾_05
  6. MATLAB 添加自定义的模块到simulink库浏览器
  7. [云炬创业基础笔记]第六章商业模式测试20
  8. 科大星云诗社动态20210325
  9. 《蓝桥小记》 2018-04-01
  10. systemtap mysql_使用systemtap调试工具分析MySQL的性能