二进制(bit)整数
计算机以电子电荷集合的形式在内存中保存指令和数据。用数字来表示这些内容就需要系统能够适应开 / 关(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)整数相关推荐
- python进制转换字符串转二进制对象整数转二进制对象16进制字符串转二进制对象(及其逆转换)
(1)数字进制转换 int() 函数用于将一个字符串或数字转换为整型. x – 字符串或数字. base – 进制数,默认十进制. 如果是带参数base的话,要以字符串的形式进行输入 >> ...
- 整数-28d在计算机中用8位二进制表示,整数-28D,在计算机中用8位二进制表示为________。...
整数计中用制表控制应多于(自适处在的好实现速率. 算机示一类最常消息见的是哪. 整数计中用制表的是功能属于.容主括(余额要包初始的内输入.开发中最系统的阶段是过程关键.不能如果核权凭证有审员却限的出现 ...
- c++将小数化为二进制_C++版进制转换(十进制,二进制,十六进制整数和小数)
进制转换C++代码 #include #include #include #include using namespace std; void MainMenu() { system("cl ...
- [译]ES6新特性:八进制和二进制整数字面量
原文:http://whereswalden.com/2013/08/12/micro-feature-from-es6-now-in-firefox-aurora-and-nightly-binar ...
- Python中整数移位及二进制串操作
Python中整数移位及二进制串操作 最近一个项目涉及到电压数据的接收和可视化处理.其中电压数据是由FPGA通过TCP协议传输的二进制流,软件接收端需要安装数据帧格式进行解析后处理.由于嵌入式组的FP ...
- 二进制与十进制整数,浮点数相互转换
整数转化为二进制 1.正整数用源码表示 2.负整数用绝对值的补码表示(将绝对值取反+1) 如-50用50的补码表示 50的源码为 00000000000000000000000000110010 反码 ...
- 二进制与十进制的整数转换
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.进制是什么? 二.常用进制 1.十进制 2.二进制 三.进制转换 1.二进转十进制 2.十进制转二进制 总结 前言 ...
- c语言long int表示范围_C语言编程第9讲——这些C语言整数类型的知识点你掌握了吗...
1.char其实是一种整数类型 在C语言中,字符使用整数来表示. 例如下面的代码: #include int main(){ char letter = '2'; printf("Lette ...
- 把整数转换成2的n次方的和数组
为什么80%的码农都做不了架构师?>>> 大概这样:125 => [1, 4, 8, 16, 32, 64] 写几种实现: Ruby: 2.3.1 :022 > 1 ...
- 第二讲,我们来谈谈:“什么是二进制”
首先,你要记住并且不要问为什么:"在计算机中,所有的数据,最终都是使用二进制数表达的." 比如,你的电脑是32位系统,还是64位系统.其实,说的是你的电脑的计算存储能力,能够计算存 ...
最新文章
- 获取元素相对于屏幕的位置
- ASP.NET MVC的过滤器笔记
- REVERSE-COMPETITION-HGAME2022-Week4
- 【LeetCode笔记】剑指 Offer 44. 数字序列中某一位的数字(Java、偏数学)
- 【JEECG Docker安装】CentOS6下docker的安装和使用
- 如何退订语音包_怎么关闭语音助手 - 卡饭网
- Acwing 734. 能量石
- android 关闭软键盘_「安卓之父」创立的 Essential 公司宣布关闭
- Qt 中实现在控件中点击鼠标,就在鼠标点击处加载图片的方法
- 软件启动时关于启动兼容问题汇总
- 如何查看本地端口???
- 使用文件进行输入输出的两种方式(算法竞赛入门经典第2章)
- Hbase 的Java API 操作
- java坦克大战练习。java基础项目。巩固java基础部分。
- CLion安装 + MinGW 配置 + Opencv安装
- 开瑞k50和k50s 导航傻瓜升级方法,其他车载导航也可以参考。
- 曲线拟合最小二乘法对数c语言实现,基于最小二乘法的曲线拟合
- Account locked due to 10 failed logins
- CentOS的虚拟机网卡eth0变成eth1
- 程序员来聊一聊信用卡(二)——对信用卡的一些基本认识