二进制,比特,字节

这篇博客详细介绍了二进制的基本概念,包括比特、字节及其转换。讲解了二进制与其他进制(八进制、十进制、十六进制)之间的转换方法,以及二进制的基本运算如与(&)、或(|)、非(~)、异或(^)、左移(<<)、右移(>>)和无符号右移(>>>). 还讨论了不同编译器环境下常用数据类型的字节大小,并介绍了如何进行字节逆序操作。
摘要由CSDN通过智能技术生成

回顾 一下 二进制基本运算的 基础知识点!记录一下!

  • 比特 : Bit — 代表 0 或者 1

  • 字节 : Byte — 8个bit 组成

  • KB : 210 = 1024 byte = 210 * 8 bit

  • MB : 220 = 1024 kb
    … …

  • 二进制 : Binary 每一位 只能是 0 或者 1 ;前缀 0B

  • 八进制 : Octal 每一位 可以是 0~7 ;前缀 0O

  • 十进制 : Decimal 每一位 可以是 0~9

  • 十六进制 : Hexadecimal 每一位 可以是 0 ~ 9 或者 a ~ f (即 10 ~ 15) ;前缀 0X
    … …

基本进制转换

十进制转二进制

除二取余法
在这里插入图片描述
十进制 转 二进制 速算
熟背 20 ~ 210 即 1 ~ 1024 以及二进制 表示法 1、10、100、1000、10000、100000、1000000、10000000、100000000、1000000000、10000000000

二进制转十进制

以上式 为例:
150 = 1 * 27 + 0 * 26 + 0 * 25 + 1 * 24 + 0 * 23 + 1 * 22 + 1 * 21 + 0 * 20

二进制 转 八进制

一个八进制数 由 三位 二进制 数表示
例如上式 的 150 二进制 :10010110 就是 [010] [010] [110] 每一个中括号 表示一位 八进制数 不够的前面补 0 从低到高 分别 乘以 20、21、22 即可得到
[0 * 22 + 1 * 21 + 0 * 20][0 * 22 + 1 * 21 + 0 * 20][1 * 22 + 1 * 21 + 0 * 20] = 226

二进制 转 十六进制

一个 十六进制 数 由 四位 二进制数 表示
例如上式 的 150 二进制 :10010110 就是 [1001] [0110] 每一个中括号 表示一位 十六进制数 不够的前面补 0 从低到高 分别 乘以 20、21、22 、23即可得到
[1 * 23 + 0 * 22 + 0 * 21 + 1 * 20][0 * 23 + 1 * 22 + 1 * 21 + 0 * 20] = 96

二进制基本运算

  • & , 0&0 = 0; 0&1 = 0; 1&0 = 0; 1&1 = 1
  • | , 0&0 = 0; 0&1 = 1; 1&0 = 1; 1&1 = 1
  • ~ 即 取反 , ~0 = 1; ~1 = 0
  • 异或 ^ , 0 ^ 0 = 0; 0 ^ 1 = 1; 1 ^ 0 = 1; 1 ^ 1 = 0 相同为0 ,不同为1
  • 左移 << , 将一个二进制数 左移 多少位,比如 150 的 1001 0110 << 2 = 0101 1000 左移后 右边 补0
  • 右移 >> , 将一个二进制数 右移 多少
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以通过MATLAB的`imread`函读取图像,将图像转换为二进制比特流的方法是使用MATLAB的`dec2bin`函将每个像素值转换为二进制,然后将所有像素值的二进制连接起来形成一个比特流。 以下是一个简单的示例代码,演示了如何将图像转换为二进制比特流: ```matlab % 读取图像 I = imread('image.jpg'); % 将图像转换为单通道灰度图像 I_gray = rgb2gray(I); % 将像素值转换为二进制 binary = dec2bin(I_gray(:), 8); % 将二进制连接起来形成比特bitstream = reshape(binary', 1, []); % 将比特流转换为字节流 byte_array = reshape(bitstream', 8, [])'; byte_array = bin2dec(byte_array); % 将字节流写入文件 fid = fopen('output.bin', 'w'); fwrite(fid, byte_array, 'uint8'); fclose(fid); ``` 在这个例子中,我们首先使用`imread`函读取图像,然后使用`rgb2gray`函将图像转换为单通道灰度图像。接下来,我们使用`dec2bin`函将每个像素值转换为8位二进制,并使用`reshape`函将这些二进制连接起来形成比特流。最后,我们将比特流转换为字节流,然后使用`fwrite`函字节流写入文件。 ### 回答2: MATLAB中可以将图像转换成二进制比特流的方法有很多种,以下是一种常见的方法: 首先,需要读取图像文件。可以使用MATLAB中的imread函来读取图像文件,例如: img = imread('image.jpg'); 然后,将图像转换成灰度图像。可以使用MATLAB中的rgb2gray函将彩色图像转换为灰度图像,例如: gray_img = rgb2gray(img); 接下来,将灰度图像转换成二进制比特流。可以使用MATLAB中的de2bi函将每个像素的灰度值转换为对应二进制比特流,例如: binary_stream = de2bi(gray_img); 最后,可以保存二进制比特流到文件中。可以使用MATLAB中的fwrite函二进制比特流写入文件,例如: fid = fopen('binary_stream.txt', 'w'); fwrite(fid, binary_stream, 'ubit1'); fclose(fid); 以上就是将MATLAB图像转换成二进制比特流的简单步骤。当然,根据具体需求,还可以进行一些额外的处理,例如图像压缩、图像编码等。 ### 回答3: 要将MATLAB图像转换为二进制比特流,你可以按照以下步骤进行: 1. 读取图像:使用MATLAB的imread函读取图像文件。该函将图像读取为一个矩阵,其中每个元素表示图像中的像素值。 2. 转换为灰度图像:如果图像是彩色图像,则可以使用MATLAB的rgb2gray函将其转换为灰度图像。这样可以使每个像素只占用一个字节,方便后续转换为二进制比特流。 3. 将图像矩阵转换为一维向量:使用MATLAB的reshape函将图像矩阵转换为一维向量。这将方便后续处理每个像素的比特值。 4. 将灰度值转换为二进制比特流:对于每个像素的灰度值,可以使用MATLAB的dec2bin函将其转换为8位二进制。这将给出一个包含图像中所有像素的二进制比特流。 5. 拼接比特流:将每个像素的二进制比特流拼接起来,形成一个完整的二进制比特流。可以使用MATLAB的cat函或vertcat/horzcat函进行拼接。 6. 保存为二进制文件:最后,使用MATLAB的fwrite函二进制比特流保存为二进制文件。你可以选择以不同的文件格式保存,如txt或dat。 总之,以上步骤描述了将MATLAB图像转换为二进制比特流的基本过程。你可以根据具体需求对转换过程进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值